Zur Navigation

OR Klausel gibt Datensätze doppelt aus?

1 KASI (Gast)

Hallo, ich hoffe mir kann jemand bei meinem mehr oder weniger einfachen Problem helfen.
Ich habe folgende SQL:

SELECT test.id as ident, test.land AS country, test_a.firmenname AS name FROM test, test_a WHERE test.id = test_a.id AND test.bestaetigt = '1' AND test.land = 'de' OR test.land = 'at' ORDER BY rand() Limit 5";

Die Ergebnisse werden doppelt ausgegeben und ich weiß nicht warum ....

In diesem Zusammenhang noch eine weitere Frage:

Test (id , land , kdnr)
Test_de (id, kdnr)
Test_en (id, kdnr)

Nun möchte ich von der Testtabelle alle Datensätze haben die das Land (zb. de) haben und in den anderen Tabellen mindestens einmal enthalten sind.
Was ich damit bezwecken will:
Ich möchte einen Kunden raussuchen der zwar in Test_de enthalten ist aber will "sofern" vorhanden den englischen inhalt ausgeben aus der Tabelle test_en , sonst den Inhalt der Standard deutsch Tabelle.

Kann mir hier jemand helfen?
Ich hoffe das ich es gut genug erläutert habe.

Liebe Grüße an alle
KASI

09.05.2007 08:40

2 User 453 (Ex-Mitglied)

Wenn ich mich nicht irre, müßtest du den die OR-Klausel in Klammern setzen:
(test.land = 'de' OR test.land = 'at')

Ich hoffe das löst das Problem :-)

09.05.2007 08:52

3 Jörg Kruse

Hallo KASI,

Nun möchte ich von der Testtabelle alle Datensätze haben die das Land (zb. de) haben und in den anderen Tabellen mindestens einmal enthalten sind.

Zur Verbindung von Test_de und Test_en bietet sich UNION an:

http://dev.mysql.com/doc/refman/5.1/de/union.html

Müsstest du mal austesten, wie man JOIN und UNION sinnvoll kombinieren kann, in etwa so würde ich es vielleicht probieren:

(SELECT [...] FROM Test JOIN Test_de ON [...]) UNION (SELECT [...] FROM Test JOIN Test_en ON [...])

09.05.2007 09:59

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]