Php SQL:使用两种不同的条件返回所有记录
我想知道如何完成我的查询。任何帮助都将不胜感激 到目前为止,我一直在用这个Php SQL:使用两种不同的条件返回所有记录,php,mysql,sql,api,left-join,Php,Mysql,Sql,Api,Left Join,我想知道如何完成我的查询。任何帮助都将不胜感激 到目前为止,我一直在用这个 SELECT DISTINCT(country) FROM prog_country LEFT JOIN depart ON prog_country.id_prog=depart.id_prog LEFT JOIN programmes ON programmes.id=prog_country.id_prog LEFT JOIN programme_order ON programme_order.id_prog =
SELECT DISTINCT(country)
FROM prog_country
LEFT JOIN depart ON prog_country.id_prog=depart.id_prog
LEFT JOIN programmes ON programmes.id=prog_country.id_prog
LEFT JOIN programme_order ON programme_order.id_prog = programmes.id
WHERE depart.aller > '".$date."'
AND depart.id IS NOT NULL
AND programmes.etat=1
AND programme_order.order_statut=1
AND programmes.type_admin IN ($all_agencies,
$all_shared)
我正在尝试获取其
order\u statut=1
所在的国家名称,以及在节目顺序表中未出现的另一个国家名称(其中有order\u statut
列)。您可以编写两个查询并使用UNION将它们连接起来,但我认为如果您只使用OR或在这两个条件下,如果我理解正确的话
SELECT DISTINCT(country) FROM prog_country
LEFT JOIN depart ON prog_country.id_prog=depart.id_prog
LEFT JOIN programmes ON programmes.id=prog_country.id_prog
LEFT JOIN programme_order ON programme_order.id_prog = programmes.id
WHERE depart.aller > '".$date."'
AND depart.id IS NOT NULL
AND programmes.etat=1 AND (programme_order.order_statut=1 OR programme_order.id_prog IS NULL)
AND programmes.type_admin IN ($all_agencies,$all_shared)
你想让所有记录都匹配其中的任何一条,还是只让两条记录都匹配其中一个条件?@tommy感谢重播,我想得到两种类型的记录,一种匹配order_statut=1,另一种类型的记录不需要order_statut check,所以我应该使用两个查询吗?使用
左连接
,然后放置条件在WHERE
子句的右侧表中,它的行为类似于内部联接。如果希望prog_country
中的行在其他表中没有匹配项,则需要将这些条件放在ON
子句中。但在这种情况下,似乎应该首先使用内部联接,因为您没有从其他表返回任何数据,您正在尝试将prog_country
中的行筛选到匹配的行。此外,DISTINCT
不是一个函数。它不适用于单个列,而是一个影响整个SELECT
列表的关键字。$all_agencies指私人节目所有者,$all_shared shared PROGRAMES所有人我使用订单状态来确认此计划已被批准共享,因此当我在这两个条件下使用OR时,它会将所有计划的国家/地区以非共享的形式提供给我,或仅适用于这两个条件:PROGRAME_order.order_statut=1或PROGRAME_order.id_prog为空没有工作我认为我应该精确地确定共享的id_prog