4

私は3つのテーブルを持っています:

t1.estimate, t1.mid, t1.description, t1.status

t2.mid, t2.mname, t2.mphone, t2.memail

t3.estimate, t3.action

これらのテーブルを結合する必要がありますが、t2 と t3 には t1 に結合するレコードが含まれていない可能性があるという問題があります。テーブル t1 は、フィルターが適用されるプライマリ テーブルです。テーブル t2 は、「mid」に参加すると、99.9% の確率で一致が含まれます。ただし、テーブル t3 は、情報を格納するだけのテーブルであり、ユーザーがテーブルに入力すると見積もりが作成されます。t1 には 40,000 以上のレコードが存在する可能性がありますが、t3 には 5,000 しかありません。

これが私の現在のコードですが、3 つのテーブルすべてにあるレコードのみを表示しています。t2 と t3 で結合するレコードがなくても、t1 から値を表示したいと考えています。

SELECT DISTINCT
    t1.estimate, t1.mid, t2.mname, t1.description,
    t1.status, GROUP_CONCAT(t3.action)
FROM t1
LEFT OUTER JOIN t2 ON t1.mid = t2.mid
LEFT OUTER JOIN t3 ON t1.estimate = t3.estimate
WHERE t1.status LIKE '0%'
GROUP BY t3.estimate
4

1 に答える 1

3

レコードが結合されていない場合は、 asの代わりにGROUP BY使用するように変更する必要があります。t1.estimatet3.estimatet3.estimate

于 2012-07-05T19:16:55.660 に答える