2Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
693
693
EMPFEHLEN
-
Hallo Community,
ich habe an der Ausgabe von zwei Tabellen bereits auch einige Stunden gebastelt und bin heute auf das Ergebnis gekommen, welches soweit auch funktioniert.
Wär ich früher auf dieses Forum gestoßen, hätte ich mir viel Zeit erspart und es wäre leichter gewesen. Aber es hat mir nicht geschadet intensiv zu recherchieren und mich durch einige Erklärungen durchzukämpfen. Da ich aber in diesem Bereich noch ein ziemlicher Anfänger bin, hab ich z.T. noch leichte Verständnisschwierigkeiten.
Aber wie gesagt, ich bekomme bereits aus zwei Tabellen mit Union die gewollten Ergebnisse geliefert.
Ein Problem bleibt dabei aber: In beiden Tabellen befindet sich eine für die jeweilige Tabelle eindeutige ID. Da aus beiden Tabellen die nur in den jeweiligen Tabellen eindeutige ID ausgelesen wird, kann es passieren, daß in der Endtabelle die ID-Spalte in einem ungünstigen Fall nicht mehr eindeutig ist. Dies stört evtl. die Ausgabe nicht, aber eine weitere Verarbeitung in einem Programm gestaltet sich dann doch sehr unkonfortabel. Besteht die Möglichkeit, daß man der gelieferten Tabelle eine Auto-Increment-Spalte bei der Select Abfrage hinzufügt um eine Eindeutigkeit zu gewährleisten?
Würde mich freuen, wenn mir jemand einen Tipp geben könnte. Selbst wenn sich herausstellt, daß es mit MySQL nicht so klappt wie ich's gern hätte.
Danke schon mal für's lesen!
Viele Grüße,
Ben
Edit:
Sorry, hab vorhin in der Eile mein Beispiel vergessen:
Die Ausgabe paßt soweit. Ich befürchte nur, daß in einem sehr ungünstigen Fall eben zwei mal die selbe ID bei HistoryID und BestandID auftaucht. Daher hab ich sie in zwei unterschiedliche Spalten gegeben und hätte gerne eine eindeutige ID-Spalte mit Auto_Increment. Ist sowas überhaupt möglich?Code :1 2 3 4 5 6 7 8
(SELECT Historyid, Null as ID, Typ, Ereignis, Null, Datum FROM tabHistory WHERE `Typ` = 'Bericht') Union (SELECT Null, BestandID, Typ, Ereignis, Folgeaktion, Datum FROM tabBestand WHERE `Typ` = 'Bericht') ORDER BY Datum ASC;
Geändert von eingeist (17.09.10 um 18:46 Uhr) Grund: Unvollständiger Post
-
Habe gerade etwas in der Doku vom Mysql gesucht allerdings keine Funktion gefunden mit der man das realisieren könnte.
Eventuell wenn man eine temporäre Tabelle erstellen würde.
Ich hätte da allerdings noch eine andere Idee.
Man könnte einen MD5 Hash über Historyid, Typ und Datum erstellen, welche dann "eindeutig" sein sollte.
Also so hab ich mir das gedacht:
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
( SELECT MD5(Historyid+Typ+Datum) AS pID Historyid, NULL AS ID, Typ, Ereignis, NULL, Datum FROM tabHistory WHERE `Typ` = 'Bericht' ) UNION ( SELECT MD5(BestandID+Typ+Datum) AS pID NULL, BestandID, Typ, Ereignis, Folgeaktion, Datum FROM tabBestand WHERE `Typ` = 'Bericht' ) ORDER BY Datum ASC;
-
Hallo Friesi!
Vielen Dank für Deine Antwort! Zum Einen, daß Du mir die Scheuklappen bzgl. der Auto_Increment Geschichte weggenommen hast und zum Anderen, daß Du mir dadurch auch gleich einen Lösungsvorschlag gegeben hast.
Ich hab natürlich gleich mal rumprobiert ... und dachte, wenn man MD5 wegläßt müßte doch der entsprechende String im "Klartext" zu erhalten sein. Hat irgendwie nicht ganz geklappt. Da ich aber keinen MD5 Hash brauche, hab ich weitergebastelt und gelesen und mir folgende Lösung erarbeitet:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
( SELECT CONCAT(CAST(Historyid as Char), 'H') AS pID Historyid, NULL AS ID, Typ, Ereignis, NULL, Datum FROM tabHistory WHERE `Typ` = 'Bericht' ) UNION ( SELECT CONCAT(CAST(BestandID as Char), 'B') AS pID NULL, BestandID, Typ, Ereignis, Folgeaktion, Datum FROM tabBestand WHERE `Typ` = 'Bericht' ) ORDER BY Datum ASC;
Zur Erklärung:
CAST(HistoryID as Char) zur Konvertierung der ID als String
CONCAT(... , ...) zum Zusammenfügen der Zeichen
Also Friesi, vielen Dank nochmal!
Sollte jemand aber doch noch wissen oder erfahren, wie man die erste Spalte als eigenständige Auto_Increment führen kann, würde ich mich über eine Antwort freuen. Lerne gerne dazu.
Auch anderen Ideen über bin ich natürlich aufgeschlossen.
Viele Grüße,
BenGeändert von eingeist (17.09.10 um 22:52 Uhr)
-
MySQL?
1) Normalerweise ergänzt man den Schlüssel beim UNION direkt
2) oder als 2tes eindeutiges Feld
3) oder man erstellt wirkliche eine neue ID analog einer Zeilennummer (Beispiel der Zeilennummerierung in MySQL)
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
--Eindeutiger Schlüssel mit Prefix SELECT CONCAT('A', a.id) AS unionid, a.feld1 FROM tableA AS a UNION SELECT CONCAT('B', b.id) AS unionid, b.feld1 FROM tableA AS b --Schlüssel Eindeutig über 2 Felder. source und id SELECT 'A' AS SOURCE, a.id, a.feld1 FROM tableA AS a UNION SELECT 'B' AS SOURCE, b.id, b.feld1 FROM tableA AS b --oder in MySQL ein wirklich neue ID, SELECT @rownum:=@rownum+1 AS rownum, t.* FROM (SELECT @rownum:=0) AS vars, (SELECT a.id, a.feld1 FROM tableA AS a UNION SELECT b.id, b.feld1 FROM tableA AS b) AS t
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
Ähnliche Themen
-
MySQL - Zwei Tabellen in Abfrage zusammenführen
Von d-braun im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 06.09.10, 12:04 -
Zwei Tabellen mit SELECT zusammenführen
Von RedWraith im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 24.06.08, 10:02 -
MySQL-Abfrage über zwei Tabellen und zwei Zeilen
Von bnc-bang im Forum Relationale DatenbanksystemeAntworten: 7Letzter Beitrag: 13.04.07, 20:43 -
auto_increment Spalte neu ordnen
Von Eistee im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 01.06.05, 16:30 -
JTable: Zwei Tabellen zusammenführen?
Von equestenebrarum im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 5Letzter Beitrag: 29.04.05, 15:27





Zitieren

Login





