1

マスターしてください、私はLEFT JOIN;を使用してデータを選択する必要がある 3 つのテーブルを持っています。そして、フィールドq ( に存在する) で順序付けする必要がありますtable3が、 state = 1 ( にも存在するtable3) の場合のみです。

私はこれを試しましたが、うまくいきません:

SELECT * FROM table 1
         LEFT JOIN table2 ON x = y
         LEFT JOIN table3 ON z=w
         WHERE w = 1
         ORDER BY q IN ( SELECT q FROM table3 WHERE state = 1);

提案をお願いします。

4

3 に答える 3

3

これはどのように:

SELECT * FROM table 1
         LEFT JOIN table2 ON x = y
         LEFT JOIN table3 ON z=w
         WHERE w = 1
         ORDER BY case when state=1 then 0 else 1 end,q 
于 2012-12-17T11:25:49.833 に答える
0

これを試して:

SELECT *,
    (SELECT q FROM table3 WHERE state = 1) as sort_order
FROM table 1
    LEFT JOIN table2 ON x = y
    LEFT JOIN table3 ON z=w
WHERE w = 1
ORDER BY sort_order

望ましい結果がどうあるべきかわからないので、おそらくこれは正しいクエリです。

SELECT *
FROM table1 as t1
    LEFT JOIN table2 as t2 ON t1.x = t2.y
    LEFT JOIN table3 as t3 ON t2.z = t3.w AND t3.state = 1
WHERE t3.w = 1
ORDER BY t3.q
于 2012-12-17T11:26:57.933 に答える
0

そのようなことを試してください:

SELECT * FROM table 1
         LEFT JOIN table2 ON x = y
         LEFT JOIN table3 ON z=w
         WHERE w = 1 AND table3.state = 1
         ORDER BY q
于 2012-12-17T11:28:29.570 に答える