需要從3個表格中獲得結果。以條件連接3個表格
表1:用戶
Attr.:user_id,user_code,活性
表2:user_addresses
的Attr .: user_address_id,USER_ID,[地址字段],活性
表3:user_details
屬性:user_detail_id,user_id,[詳細字段],有效
active
是布爾型字段。在user_addresses
和user_details
中,user_id可以有多行(比如3行)。 2行將active
字段設置爲0(無效)。第三行是active
字段設置爲1的活動字段。
現在,我想在與user_code
一起搜索時加入所有這些表格。我編譯了以下連接查詢:
SELECT "*" FROM "users"
LEFT JOIN "user_details" AS "ud" USING ("user_id")
LEFT JOIN "user_addresses" AS "ua" USING ("using_id")
WHERE "user_code" = 'TRY001' AND "users"."active" = 1 AND "ua"."active" = 1 AND "ud"."active" = 1
只有當所有表中都有條目時,纔會得到預期的結果。所以我改變了這樣的事情:
SELECT "*" FROM "users"
LEFT JOIN "user_details" AS "ud" USING ("user_id")
LEFT JOIN "user_addresses" AS "ua" USING ("using_id")
WHERE "user_code" = 'TRY001' AND "users"."active" = 1 OR "ua"."active" = 1 OR "ud"."active" = 1
這次我得到的第一行(這是不活動的),而不是活動的。
我實際上需要的是:
- 加入三個表
- 僅獲得來自
user_addresses
和user_details
表的有效行 - 櫃面沒有活動的行/沒有記錄在
user_addresses
和user_details
表中存在,我只想返回其中包含NULL值的列名稱。
這將是很好,如果我會知道爲什麼它被評爲! – Thamilan