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