需要从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