Php mysql查询数组参数
我有一个简单的数组:Php mysql查询数组参数,php,mysql,Php,Mysql,我有一个简单的数组: company company_to_attributes ===================== ============================ | id_company | name id_attributes | id_company ===================== ============================ | 1 | Test
company company_to_attributes
===================== ============================
| id_company | name id_attributes | id_company
===================== ============================
| 1 | Test | 1 | 1
| 2 | Test 2 | 2 | 1
| 3 | Test 3 | 3 | 1
| 4 | Test 4 | 4 | 3
| .. | ... | .. | ...
===================== ============================
我想写一个查询,从数组中获取具有id_属性的公司。试试这个
$array_attributes_IDS = array(1,2);
SELECT c.* FROM company c INNER JOIN company_to_attributes ca ON c.id_company=ca.id_company WHERE ca.id_attributes IN (1,2)
这将只返回一个company
TEST
,因为它同时包含两个属性。请尝试以下操作:
$array_attributes_IDS = array(1,2);
$finalArray = implode(',', $array_attributes_IDS);
$arrCount = count($array_attributes_IDS);
$query =" SELECT com.name
FROM company com
INNER JOIN company_to_attributes att
ON com.id_company = att.id_company
WHERE att.id_attributes IN ($finalArray)
GROUP BY com.name
HAVING COUNT(*) = $arrCount";
希望这会有所帮助。请举例说明你想做什么以及结果应该是什么。Thk作为答案。我会选择所有具有所有数组属性值的公司。如果具有all值。@迈克:通过内部联接,您将获得与至少1个属性关联的所有公司。我希望这就是你想要的。或者您想要所有的组件,即使它不与任何属性关联?请解释香港的答复。查询工作正常,但我的数组是动态的,我不知道包含多少元素。如何解决查询计数?这太完美了!非常感谢你。
$array_attributes_IDS = array(1,2);
$finalArray = implode(',', $array_attributes_IDS);
$query = "SELECT C.name FROM company_to_attributes CA INNER JOIN company C ON CA.id_company = C.id_company WHERE CA.id_attributes IN ($finalArray)";
SELECT c.name
FROM company c
JOIN company_to_attributes a
ON c.id_company = a.id_company
WHERE a.id_attributes IN (1,2)
$sql = "
SELECT t1.name FROM company_to_attributes
LEFT JOIN company AS t1 ON t1.id_company = company_to_attributes.id_company
WHERE company_to_attributes.id_attributes IN (".implode(',', $array_attributes_IDS).")
";
"SELECT c.name from company c inner join company_to_attributes cta ON cta.id_company = c.id_company WHERE cta.id_attributes IN (1,2);"