Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用和(&;)使用PHP和mysql获取记录_Mysql - Fatal编程技术网

无法使用和(&;)使用PHP和mysql获取记录

无法使用和(&;)使用PHP和mysql获取记录,mysql,Mysql,我有下面的查询,我想使用where子句显示满足条件的特定记录 以下是查询 select basic_information.*, service_history.*, inland_ic_information.* from service_history INNER JOIN basic_information ON service_history.pNo=basic_information.pNo INNER JOIN inland_ic_information ON servic

我有下面的查询,我想使用where子句显示满足条件的特定记录

以下是查询

select basic_information.*, service_history.*, inland_ic_information.* 
from service_history 
INNER JOIN basic_information 
ON service_history.pNo=basic_information.pNo 
INNER JOIN inland_ic_information 
ON service_history.pNo=inland_ic_information.pNo 
WHERE service_history.pNo = '4301587'  
and inland_ic_information.inlandcourseDescription ='A' 
and inland_ic_information.inlandcourseDescription ='B'
上面的查询返回零行

当我使用单一条件时,如

WHERE service_history.pNo = '4301587'  and inland_ic_information.inlandcourseDescription ='A'

它返回行

但当我同时使用这两个条件时,它返回零行


需要您的帮助

听起来您想输出
pNo
值的所有行,其中
pNo
inlandcourseDescription
值同时为
a
B
的行相关联。您可以使用此查询执行此操作:

select basic_information.*, 
       service_history.*, 
       inland_ic_information.* 
from service_history 
INNER JOIN basic_information ON service_history.pNo=basic_information.pNo 
INNER JOIN inland_ic_information ON service_history.pNo=inland_ic_information.pNo 
WHERE service_history.pNo = '4301587'  
  AND (inland_ic_information.inlandcourseDescription = 'A'
   AND EXISTS (SELECT * 
               FROM inland_ic_information 
               WHERE pNo = '4301587' 
                 AND inlandcourseDescription = 'B')
    OR inland_ic_information.inlandcourseDescription = 'B'
   AND EXISTS (SELECT * 
               FROM inland_ic_information 
               WHERE pNo = '4301587' 
                 AND inlandcourseDescription = 'A')
       )

第一个查询的where条件使其结果为0

and     inland_ic_information.inlandcourseDescription ='A' 
and     inland_ic_information.inlandcourseDescription ='B'
您可以通过以下方式获得结果:

WHERE   service_history.pNo = '4301587'  
AND     
        (
        inland_ic_information.inlandcourseDescription ='A' 
        OR  
        inland_ic_information.inlandcourseDescription ='B'
        )
SELECT     *
FROM       service_history A
INNER JOIN basic_information B 
        ON A.pNo=B.pNo 
LEFT JOIN  inland_ic_information C 
       ON  A.pNo=C.pNo AND C.inlandcourseDescription ='A' 
LEFT JOIN  inland_ic_information D 
       ON  A.pNo=D.pNo AND D.inlandcourseDescription ='B' 
WHERE      A.pNo = '4301587'  
GROUP BY   A.pNo
HAVING     C.inlandcourseDescription IS NOT NULL 
AND        D.inlandcourseDescription IS NOT NULL

也许您可以在
inland_ic_information
表中执行两次
LEFT JOIN
,如下所示:

WHERE   service_history.pNo = '4301587'  
AND     
        (
        inland_ic_information.inlandcourseDescription ='A' 
        OR  
        inland_ic_information.inlandcourseDescription ='B'
        )
SELECT     *
FROM       service_history A
INNER JOIN basic_information B 
        ON A.pNo=B.pNo 
LEFT JOIN  inland_ic_information C 
       ON  A.pNo=C.pNo AND C.inlandcourseDescription ='A' 
LEFT JOIN  inland_ic_information D 
       ON  A.pNo=D.pNo AND D.inlandcourseDescription ='B' 
WHERE      A.pNo = '4301587'  
GROUP BY   A.pNo
HAVING     C.inlandcourseDescription IS NOT NULL 
AND        D.inlandcourseDescription IS NOT NULL

感谢您的回答,我需要pNo='4301587'符合我需要的课程'A'和'B'的行,条件不符合,或者在('A','B')中返回行,无论他是否符合课程A或B,但我需要检查这两个课程。我不确定我是否理解。您想要的行具有
pNo='4301587'
,但仅当具有
InlandCoursedDescription='A'
InlandCoursedDescription='B'
的行存在时?是的,我想要的行具有pNo='4301587',InlandCoursedDescription='A'和InlandCoursedDescription='B',但一行不能同时具有这两个值,它只能是
A
B
,不能同时在我的数据库表上,同一个pNo='4301587'有两行,他们同时完成了InlandCoursedDescription='A'和InlandCoursedDescription='B'谢谢你的回答,我需要pNo='4301587'符合我需要的课程'A'和'B'的条件的行('A','B')返回行,无论他是否符合课程A或B,但我需要检查两个课程。如果没有结果,则返回FALSE。“a”和“B”都有一个结果,为什么它返回false?您能发布模式和一些示例值吗?查看下面的评论/答案。如何在此处发布架构?问题和剪切粘贴。其中一个答案解决了你的问题吗?如果没有,你能提供更多的信息来帮助回答这个问题吗?否则,请考虑将最能解决你的问题的答案标记为(在上/下投票箭头下的复选标记)。看见