![]() |
Datenbank: MySQL • Version: 4.1.13 • Zugriff über: ZEOS
[gelöst] Join für Zeilen nicht Spalten
Tach zusammen!
Folgendes Problem: Ich habe in meiner DB zwei Tabellen gleicher Struktur, also z.B. Tabelle temp ------------ LfdNr Integer Name VarChar Borname VarChar Tabelle haupt ------------- LfdNr Integer Name VarChar Vorname VarChar Nun würde ich ja mittel
SQL-Code:
und
SELECT Vorname, Name FROM temp
SQL-Code:
zwei Resultsets mit den Daten aus jeweiliger Tabelle bekommen. Gibt es eine Möglichkeit, diese beiden Resultsets miteinander zu verknüpfen, so dass erst die Daten aus temp und dann die aus haupt angezeigt werden?
SELECT Vorname, Name FROM haupt
Vielen Dank im Voraus, |
Re: Join für Zeilen nicht Spalten
Hallo Thomas,
UNION heißt der Operator, mit dem du zwei homogene result sets vereinigen kannst. Grüße vom marabu |
Re: Join für Zeilen nicht Spalten
Danke! Ich wusste doch, dass es sowas gab, nur wenn man den noch nicht benutzt hat, fällt zumindest mir das Namen merken so schwer :oops:
|
Re: Join für Zeilen nicht Spalten
Vielleicht darf ich ja nochmal stören ;-)
Mein Ansatz war jetzt Folgender:
SQL-Code:
Leider bekomme ich nun eine Fehlermeldung:
(
SELECT "Probenbezeichnung" AS Parameter, MAX(IF(labkopf.lfdnr = "1472",labkopf.Probenbezeichnung,"")) AS "LG200501469", MAX(IF(labkopf.lfdnr = "1556",labkopf.Probenbezeichnung,"")) AS "LG200501553" FROM labkopf, labparameter LEFT JOIN labpositionen ON labpositionen.parameter = labparameter.lfdnr WHERE labkopf.lfdnr = labpositionen.berichtsnr AND labpositionen.BerichtsNr IN (1472, 1556) AND labPositionen.Parameter IN (85) GROUP BY labparameter.lfdnr ) UNION ALL ( SELECT labparameter.name AS Parameter, MAX(IF(labkopf.lfdnr = "1472",labpositionen.wert,"")) AS "LG200501469", MAX(IF(labkopf.lfdnr = "1556",labpositionen.wert,"")) AS "LG200501553" FROM labkopf, labparameter LEFT JOIN labpositionen ON labpositionen.parameter = labparameter.lfdnr WHERE labkopf.lfdnr = labpositionen.berichtsnr AND labpositionen.BerichtsNr IN (1472, 1556) AND labPositionen.Parameter IN (85) GROUP BY labparameter.lfdnr ) ORDER BY Parameter
Code:
Also ist er anscheinend nicht mit meinen Vergleichen nicht zufrieden, ,die Frage ist nur warum... Jemand ne Idee für mich.
Illegal mix of collations for operation 'UNION'
|
Re: Join für Zeilen nicht Spalten
Sieht so aus, als würde dem Literal "Probenbezeichnung" im ersten SELECT eine andere COLLATION zugewiesen, als der Spalte labparameter.name im zweiten SELECT. Du musst vielleicht einmal prüfen, welchen default charset der MYSQL Server bei dir verwendet, und welche Festlegungen für die besagte Spalte getroffen wurden.
marabu |
Re: Join für Zeilen nicht Spalten
Ist es eigentlich auch erlaubt/möglich eine Abfrage über 2 bis 3 Tabellen zu erstellen, also nur über die gleichen Felder (z.B. LfdNr und Name).
Tabelle1: LfdNr, Name, irgendwas Tabelle2: LfdNr, Name, irgendwas2, irgendwas3 Und wenn möglich noch einen gemeinsamen automatischen Index für die Tabellen einzustellen? (also z.B. LfdNr als eindeutige ID in den 2-3 Tabellen) |
Re: Join für Zeilen nicht Spalten
Du kannst mit dem UNION operator mehrere result sets zu einem einzigen vereinigen. Nicht die Feldnamen müssen gleich sein, sondern die Felddefinitionen (homogene result sets).
Ein gemeinsamer Schlüsselgenerator für mehrere Tabellen ist machbar. Wozu brauchst du sowas? marabu |
Re: Join für Zeilen nicht Spalten
Zitat:
Code:
angelegt und ich meine Tabellen mit
DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;
Code:
Wieso sagt ein Kollege einem sowas auch nicht :wall:
DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
Danke dir nochmal, marabu! |
Re: Join für Zeilen nicht Spalten
Zitat:
Also wenn ich jetzt dennoch einige Felder drin hab, mit unterschiedlichen Felddefinitionen, aber diese Felder nicht mit ins Suchergebnis mit aufnehme, dann sollte es also auch gehen? Zitat:
Im Grunde ginge es auch ohne einen gemeinsamen Index, aber mit wäre es auch mal möglich die Dateien von 2... Dateilisten in einem Verzeichnis abzulegen, ohne daß es zu Überschneidungen kommen kann. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz