因此,生产者表模式如下:
producer_id = int PK
producer_name = varchar
is_restaurant = boolean
is_farm = boolean
is_distributor = boolean
我希望有一个查询可以做到以下内容:
选择所有生产商的 producer_id,这些生产商要么是农场、餐厅或者分销商,并且这些 producer_id 分别为 11895、11976 和 11457。
目前我有以下代码:
SELECT `pd`.`producer_id` AS producer_id, `pd`.`producer` AS producer, `pd`.`is_restaurant`, `pd`.`is_restaurant_chain`, `pd`.`is_farm`, `pd`.`is_farmers_market`, `pd`.`is_distributor`, `pd`.`is_manufacture`, `ad`.`address_id`, `ad`.`address`, `ad`.`state_id`, `ad`.`city`, `ad`.`city_id`, `ad`.`country_id`, `ad`.`zipcode`, `ad`.`latitude`, `ad`.`longitude`, `cu`.`custom_url` AS custom_url
FROM (`producer` AS pd)
JOIN `address` AS ad ON `pd`.`producer_id`=`ad`.`producer_id`
LEFT JOIN `custom_url` AS cu ON `cu`.`producer_id`=`pd`.`producer_id`
WHERE `is_farm` = 1
OR `is_distributor` = 1
OR `is_restaurant` = 1
AND `pd`.`producer_id` IN ('181176', '181180', '176080', '5')
GROUP BY `ad`.`address_id`
LIMIT 10
但是该查询仅将is_farm,is_distributor和is_restaurant的WHERE条件应用于并未应用producer_id的AND子句。
我想知道是否可以使用子查询来进行“既是餐厅又是分销商或者农场”,然后将其插入到带有AND子句的查询中。
我该怎么做才能解决这个问题?
create view producer_plus as select *, is_restaurant or is_farm or is_distributor as is_producer from producer
。您仍然可以更新它(因为它不是连接),但当然您将无法写入计算列。 - BohemianAND
的优先级与其他语言中的常规相同。 - hlev