[mysql]Vergleich von 2 Tabellen

Dunas

Erfahrenes Mitglied
ich habe momentan 2 tabellen

inhalt von tb1:
Code:
id(int) 	name(text) 	punkte(int) 	besitzer_id(int) 
1		asdf		25		68
2		ghjk		30		25
3		sdf		123		45
4		sdgh		75		23
5		sdfg		12		32

inhalt von tb2, die tabelle ist im aufbau identisch zu tb1:
Code:
id 	name 	punkte 	besitzer_id 
1	asdf	12	68
2	ghjks    30	25
3	sdf	123	44
4	sdgh	75	23

nun möchte ich alle datensätze aus tb1 in einer datei ausgeben die volgende bedingungen erfüllen:

tb1.id = tb2.id and tb1.name != tb2.name oder
tb1.id = tb2.id and tb1.punkte != tb2.punkte oder
tb1.id = tb2.id and tb1.besitzer_id != tb2.besitzer_id oder
tb1.id not in tb2.id

also müsste ich nacher die datensätze 1,2,3,5 aus tb1 in einer datei wiederfinden

ich bekomme leider keinen ansatz hin der mich weiter bringn würde
vieleicht weiß ja jemand von euch rat

danke schon mal micro86
 
Hallo Micro86,

Du hast ja eigentlich die Antwort selbst gegeben:

SQL:
select tb1.id from tb1, tb2 
where (tb1.id = tb2.id and tb1.name != tb2.name) or
      (tb1.id = tb2.id and tb1.punkte != tb2.punkte) or
      (tb1.id = tb2.id and tb1.besitzer_id != tb2.besitzer_id) or
      (tb1.id not in (select id from tb2))
Gruß, Sparks
 
das problem hierbei ist aber das ich sowohl aus tb1 und tb2 die datensätze bekomme
was ich nicht wollte ich wollte nur die datensätze aus tb1
die datensätze werden so dargestellt

Code:
id 	name 	punkte 	besitzer_id 	id 	name 	punkte 	besitzer_id 
1	asdf	25	68		1	asdf	12	68
2	ghjk	30	25		2	ghjks    30	25
3	sdf	123	45		3	sdf	123	44
5	sdfg	12	32		1	asdf	12	68
5	sdfg	12	32		2	ghjks    30	25
5	sdfg	12	32		3	sdf	123	44
5	sdfg	12	32		4	sdgh	75	23


und das zweite problem ist das ich das ergebniss nicht in eine datei schreiben kann
sobald ich den befehl erweiter mit der ausgabeanweisung liefert er mir kein ergebniss zurück
 
natürlich erhalte ich dan nur die spalte aus der ersten tabelle in deinem beispiel

SQL:
SELECT tb1.id FROM tb1, tb2
aber so steht es oben in dem code

ich habe das geändert in

SQL:
SELECT * FROM tb1, tb2
weil ich alle spalten benötige
aber ist ja auch egal so erhalte ich aus beiden tabellen die datensätze

lasse ich das tb2 nach dem komma weg erhalte ich einen fehler
dan ist t2.id nicht bekannt
 
Zuletzt bearbeitet:
hmm hier tut sich scheinbar nichts mehr
dan werde ich mir nen php workaround basteln müssen
ist nur schlecht weil die geschwindigkeit so stark darunter leidet
 
Hallo,

ändere das Statement doch noch leicht ab, und dann bekommst du nur die eindeutigen Werte aus der 1.Tabelle:

SQL:
SELECT distinct tb1.* 
  FROM tb1, tb2
 WHERE (tb1.id = tb2.id AND tb1.name != tb2.name) OR
       (tb1.id = tb2.id AND tb1.punkte != tb2.punkte) OR
       (tb1.id = tb2.id AND tb1.besitzer_id != tb2.besitzer_id) OR
       (tb1.id NOT IN (SELECT id FROM tb2))

Markus
 
wenn das hinhaut bekommst du nen kuss ^^
ich teste es mal schnell

astrein einen dicken kuss und ein schönes dankeschön
hat sich erledigt ich werde euch beiden bewerten
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück