我有$table2Status
以下数组:
[{
"Status_for_t2”:”2”,”id": "4"
}, {
"Status_for_t2": "14",
"id": "6"
}]
其从table2
抓起has no index to
table1`但它需要其上是一对很多关系,他们唯一共同的地方就是 这两个表都是来自另一个表的索引状态。
我需要以某种方式从table2
追加列,我以为到了table2
ID添加到我的数组,所以我可以再 离开加入table2
,但我不知道我应该怎么做吧。我试过这个ON t1.status IN ($t2_status)
和这个ON t1.status = 't2.status'
但显然他们是错的,查询没有在 这个数组中扫描正确的键,它只填充我的数组的第一个索引表单。我觉得我应该在WHERE
之后添加一些东西。
我在这里错过了什么?什么是正确的方法来做到这一点?我如何桥接这两张桌子?
任何帮助,将不胜感激。
function theResult ($table2Status) {
$t2_status = implode(',', array_column($table2Status, ’Status_for_t2’));
$t2_id= implode(',', array_column($table2Status, 'id'));
//echo json_encode($theUserEvrIDs);
$sql =
"SELECT
t1.date,
t1.status,
t2.name_one,
t2.name_two,
t2.status
FROM table1 as t1
Left JOIN table2 as t2
ON t1.status IN ($t2.status)
WHERE
t1.status IN ($t2_status))
GROUP BY t1.id
HAVING COUNT(DISTINCT t1.status) ORDER BY t1.date ASC";
$result = $this->conn->query($sql);
while ($row = mysqli_fetch_assoc($result))
$returnArray[] = $row;
return $returnArray;
}
'选择 t1.date, t1.status, t2.name_one, t2.name_two, t2.status .... GROUP BY t1.id'无效SQL HTTPS ://www.psce.com/blog/2012/05/15/mysql-mistakes-do-you-use-group-by-correctly/ –
显示两个表的架构。你说没有索引,但是如果你要加入他们,那么两张表之间必须有一些关系。什么是关系? –
另外,如果变量$ t2_status如图所示,那么在您的WHERE的IN子句中它将不会是正确的SQL语法。基本上,按照写法,t1中的每一行都将匹配in子句匹配的t2中的所有行。由于$ t2_status的内容对于SQL而言是无稽之谈,因此它不会成为行。 –