4

私はsybaseでそれを行うことができ、oracleでそれを行うことができますが、mysqlでそれを行う方法がわかりません。

私はこれを持っています:(私のSQLを再フォーマットしないようにしてください、前回誰かがそれを変更したので同じではなく、質問を無意味にしました)

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')

そして、私は意味をなさないあらゆる種類の結果を得る。

table2.data = catであるtable1からすべてのIDのリストを取得し、table3.data=dogであるtable3に対してその結果を使用して外部結合を実行したいと思います。

2つの結合句でtable1に同じテーブル/エイリアスを指定できないことに気付きました。そのため、mysqlは結合式を個別に実行し、結果をORで結合していると思います。

また、fromセクションの「innerjoin」を削除してwhere句に入れてみましたが、これも機能しませんでしたが、別の方法では機能しませんでした(異なる誤った結果が得られました)

これは、sybaseまたはoracleでは非常に簡単です。

私は何が間違っているのですか?

4

1 に答える 1

14
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')

fromステートメントでコンマを使用したくないと思います。カンマはクロスジョインと言うのと同じだと思います。確かではありませんが、このクエリはあなたが探しているものだと思います。

于 2009-01-08T04:46:29.737 に答える