Php 如果第二个表中至少有4条记录,请从两个表中选择记录

Php 如果第二个表中至少有4条记录,请从两个表中选择记录,php,mysql,mysqli,Php,Mysql,Mysqli,我有2个表,我想根据以下条件获取数据: 表1有多个产品记录。 表2包含产品的各种大小选项,不能多于或少于4行。 现在,我想获取那些没有条目或没有精确4条条目的产品 表结构如下: 表1 表2 现在查询将获取ID为2和3的产品,因为它们的记录少于4,并且没有记录 我使用下面的查询获取表2中没有记录的产品 所以,您不想要表2中记录少于4条的数据,或者什么?不,我想要记录少于4条的数据。为什么添加group by?是否需要选择所有列?我不能只获取必需的列吗?您可以只列出必需的列。但是,请确保SELECT

我有2个表,我想根据以下条件获取数据:

表1有多个产品记录。 表2包含产品的各种大小选项,不能多于或少于4行。 现在,我想获取那些没有条目或没有精确4条条目的产品

表结构如下:

表1

表2

现在查询将获取ID为2和3的产品,因为它们的记录少于4,并且没有记录

我使用下面的查询获取表2中没有记录的产品


所以,您不想要表2中记录少于4条的数据,或者什么?不,我想要记录少于4条的数据。为什么添加group by?是否需要选择所有列?我不能只获取必需的列吗?您可以只列出必需的列。但是,请确保SELECT中的列表与BY组中的列表相同。这也会起作用:从表1中选择p.id、p.name、p.color、p.price、countt.*p.id左连接表2 t ON p.id=t.pid GROUP BY p.id、p.name、p.color、p.price have countt.*<4我有一个错误1064-您的SQL语法有一个错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行的“*FROM Table1`p LEFT JOIN Table2 t ON p.id=t.pid GROUP BY p.”附近使用的正确语法`
id   name  color  price   instock
----------------------------------
 1   rice   white  1200    1
 2   shoe   brown  2500    1
 3   belt   red    5200    1
  id   size   pid
 -----------------
  1     5     1
  2     10    1
  3     4     1 
  4     15    1
  5     7     2
SELECT p.* FROM `Table1` p LEFT JOIN `Table2` t ON p.id = t.pid  WHERE 
t.pid IS NULL
SELECT p.id, p.name, p.color, p.price, p.instock, count(t.*) 
FROM `Table1` p 
LEFT JOIN `Table2` t 
ON p.id = t.pid  
GROUP BY p.id, p.name, p.color, p.price, p.instock
HAVING count(t.*) < 4