self join, alles vergleichen ausser gleiche werte
schildi
- datenbank
hallo!
ich möchte folgende abfrage über eine tabelle gestalten:
jeder datensatz soll mit jedem verglichen werden, außer mit demselben.
komme hier auf keine brauchbare lösung..
*tabelle test*
-----------
wert
-----------
A
B
C
verglichen werden sollte hier also:
A mit B, A mit C
B mit A, B mit C
C mit A, C mit B
meine lösung war folgende:
SELECT a.*
FROM test a CROSS JOIN test b
WHERE a.wert <> b.wert
leider ist das für die mysql 5 datenbank schon zuviel des guten.
bei ca 700 datensätzen rödelt die datenbank schon ewig.
gibt es einen anderen weg?..
gruß lars
yo,
mach doch mal eine einen einfachen join draus, anstelle einen ceross join zu verwenden:
SELECT a.*
FROM test a
INNER JOIN test b ON a.wert <> b.wert
;
denke daran, dass dabei viele datensätze rauskommen können.
Ilja
yo,
mach doch mal eine einen einfachen join draus, anstelle einen ceross join zu verwenden:
SELECT a.*
FROM test a
INNER JOIN test b ON a.wert <> b.wert
;
INNER JOIN ist lediglich ein Alias zu CROSS JOIN ...
http://dev.mysql.com/doc/refman/4.1/en/join.html
yo,
INNER JOIN ist lediglich ein Alias zu CROSS JOIN ...
sicherlich, aber ich benutze immer einen INNER JOIN, wenn ich eine Join bedingung habe und du hast eine. ist letztlich eine "geschmackssache". wie auch immer, bei mysql 5 und 700 datensätze liegt es nicht an dem dbms, sondern eventuell ist es ein darstellungsproblem oder aber die hardware ist sehr alt.
Ilja
ok. deine schreibweise ist zumindest mal schneller..