Mysql关系one-many用更多where子句获取数据

时间:2015-08-13 19:45:36

标签: php mysql database relationship one-to-many

我的mysql数据库中有2个表

1用于注册所有具有ID自动增量的个人信息 2表示具有值的某个属性,并且具有ID_Anagrafica = ID

我的问题是:如果我想在第一个表中仅在第二个表中搜索具有某个属性值的注册表,我该怎么做?

示例:

第一个注册表: enter image description here

具有值的属性的第二个表:

enter image description here

ID_AnagraficaID

中的registry匹配

有一个查询在第二个表上使用where子句返回ID:

SELECT *
FROM "first table"
WHERE "secondTable".valore = "value"
AND "secondTable".valore = "value";

2 个答案:

答案 0 :(得分:1)

这将是一种方式...... in的值和count的值可以是传入的变量,因为你总是知道你传入的值和有多少值。

SELECT * 
FROM First A
INNER JOIN (SELECT ID_anafrafica 
            FROM Second
            WHERE Valore in ('value1','Value2')
            Group by ID_anafrafica 
            having count(ID_Anafrafica) = 2) B
 on A.ID  = B.ID_anafrafica 

我对此不感兴趣的是你不会忘记ID_Attributo,如果你正在寻找属性的价值,我认为你应该这样做

与为每个元素添加额外的连接相比,这在性能和可维护性方面应该更好。

答案 1 :(得分:0)

您应该使用JOIN

SELECT a.* FROM "first table" AS a <br>
JOIN "second table" AS b ON a.ID = b.ID_Anagrafica <br>
WHERE b.valore = "value" <br>
GROUP BY a.ID;