Frage

Ich kann es tun, in sybase und ich kann es tun, in oracle, aber ich bin nicht zu sehen, wie es in mysql.

Ich habe dies:(bitte halten Sie sich von der re-formatting my sql, das Letzte mal jemanden haben, der Sie verändert, es also es war nicht das gleiche gemacht und die Frage sinnlos)

select table1.id
from
table1
  inner join
    table2 on (table1.id = table2.id and table2.data='cat'),
table1 t1
  left outer join
    table3 on (t1.id = table3.id and table3.data = 'dog')

Und ich bekomme alle möglichen Ergebnisse, die keinen Sinn machen.

Ich möchte eine Liste aller id from table1 where table2.data = cat wird, dann machen Sie eine äußere Verknüpfung mit den Ergebnissen, die gegen die Tabelle 3, wo table3.data = Hund.

Ich merke, dass ich nicht geben Sie die gleiche Tabelle/alias für "Tabelle1" in den beiden join-Klauseln, so führt mich zu glauben, dass mysql ausgeführt wird die join-Ausdrücke getrennt und ORing-die Ergebnisse zusammen oder so etwas wie, dass.

Ich habe auch versucht, loszuwerden, die "innere Verknüpfung" in der von Bereich und setzen es in die where-Klausel, das hat nicht funktioniert entweder, wenn es nicht Arbeit auf eine andere Weise (got verschiedenen fehlerhafte Ergebnisse)

Dies wäre so einfach, in sybase oder oracle.

Was mache ich falsch?

War es hilfreich?

Lösung

select table1.id
from
table1
  inner join
    table2 on (table1.id = table2.id and table2.data='cat')
  left outer join
    table3 on (table1.id = table3.id and table3.data = 'dog')

Ich denke, dass Sie nie wollen, um die Verwendung eines Kommas in der from-Anweisung.Ich glaube, das Komma ist äquivalent zu sagen cross-join.Nicht sicher, aber ich denke, dieser Abfrage ist, was Sie suchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top