跨多行的mySQL搜索返回不同的id

跨多行的mySQL搜索返回不同的id,mysql,cakephp,Mysql,Cakephp,在子表中搜索时遇到问题。下面是一个简单的例子: 表:项目详细信息 我想通过名称、描述搜索一个项目,然后将其与项目列表id关联,例如zip和state 我知道问题在于如何搜索明细表。因此,我将其分解为一个简单的表: SELECT `ProjectDetail`.`project_list_id` FROM `database`.`project_details` AS `ProjectDetail` WHERE ( ( ( (`ProjectDet

在子表中搜索时遇到问题。下面是一个简单的例子:

表:项目详细信息

我想通过名称、描述搜索一个项目,然后将其与项目列表id关联,例如zip和state

我知道问题在于如何搜索明细表。因此,我将其分解为一个简单的表:

SELECT `ProjectDetail`.`project_list_id` FROM `database`.`project_details` AS `ProjectDetail` WHERE (
    (
        (
            (`ProjectDetail`.`answer` = '96720') 
            AND 
            (`ProjectDetail`.`field_name` = 'zip')
        )
    ) 
    AND (
        (
            (`ProjectDetail`.`answer` = 'HI') 
            AND 
            (`ProjectDetail`.`field_name` = 'state')
        )
    ) 
)

我想选择满足这两个字段要求的项目列表id,但由于它们是唯一的行,因此不会返回任何内容。

据我所知,您不想返回所有项目id,每个id分别满足这两个条件。因此,这应该是可行的:

SELECT a.project_list_id 
FROM database.project_details a
INNER JOIN database.project_details b
ON a.project_list_id = b.project_list_id
WHERE a.answer = '96720' AND a.field_name = 'zip'
AND b.answer = 'HI' AND b.field_name = 'state'

这是偶然留下的。我想找到同时适用于两种情况的项目列表id。如果你看一下数据,你会发现这个例子是project_list_id=1,这两个条件都会满足。也许实现这一点的方法是两个选择和一个并集,但似乎应该有一种方法。答案列中类似的值误导了我。因此,有必要进行区分。但也是或是必要的。我将编辑我的回答使用OR的问题是它不要求HI和96720都为真。因此,如果另一组项目列表id只有HI或96720,那么它也会被选中。首先我误解了你。我希望编辑后我的答案是正确的