Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mySQL:如何连接三个表?_Php_Mysql_Join - Fatal编程技术网

Php mySQL:如何连接三个表?

Php mySQL:如何连接三个表?,php,mysql,join,Php,Mysql,Join,我的应用程序中有以下查询。它运行良好,但我需要它还包含与每个制造商关联的产品数量 当前查询: SELECT * FROM (`manufacturers`) JOIN `languages` ON `manufacturers`.`lang` = `languages`.`id` ORDER BY `languages`.`id` asc, `id` asc 我的产品表如下所示: id | name | manufacturerid 0 | Product1

我的应用程序中有以下查询。它运行良好,但我需要它还包含与每个制造商关联的产品数量

当前查询:

SELECT * FROM (`manufacturers`)
JOIN `languages` ON `manufacturers`.`lang` = `languages`.`id`
ORDER BY `languages`.`id` asc, `id` asc
我的产品表如下所示:

id    |    name    |    manufacturerid
0     |   Product1 |    0
选择'manufacturers`.*,'languages`.*,将('products`.'id`)计数为NumberOfProducts
来自(`manufacturers`)
在'manufacturers'上加入'languages'。'lang`='languages`.'id`
左外联接'products'打开
`产品`.`manufacturerid`=`manufacturers`.`manufacturerid``
分组
按“语言”排序。`id`asc,`manufacturers`。`id`asc
选择'manufacturers`.*,'languages`.*,将('products`.'id`)计数为NumberOfProducts
来自(`manufacturers`)
在'manufacturers'上加入'languages'。'lang`='languages`.'id`
左外联接'products'打开
`产品`.`manufacturerid`=`manufacturers`.`manufacturerid``
分组
按“语言”排序。`id`asc,`manufacturers`。`id`asc

我在这个问题上做得太慢了,但这是另一个选择!嗨,马丁,你能解释一下吗?@Industrial因为你的选择中只有
*
,我不知道它们是什么。选择列表中任何不是聚合或文字的内容都应位于
GROUP BY
子句中。我认为MySQL不允许这样做,但这会改变查询的语义。我在这个选项上做得太慢了,但在另一个选项上做得太慢了!嗨,马丁,你能解释一下吗?@Industrial因为你的选择中只有
*
,我不知道它们是什么。选择列表中任何不是聚合或文字的内容都应位于
GROUP BY
子句中。我认为MySQL允许他们不这样做,但这会改变查询的语义。嗨!使用您的解决方案时,我遇到以下错误:错误号:1096未使用任何表选择*按
语言排序
id
asc,
manufacturerid
asc更不用说OrbMan了,我有一个查询直接在这之后运行,导致了错误。对不起,非常感谢你的帮助!你好使用您的解决方案时,我遇到以下错误:错误号:1096未使用任何表选择*按
语言排序
id
asc,
manufacturerid
asc更不用说OrbMan了,我有一个查询直接在这之后运行,导致了错误。对不起,非常感谢你的帮助!
select * 
from `manufacturers` m
inner join `languages` l on m.`lang` = l.`id` 
left outer join (
    select manufacturerid, count(*) as ProductCount
    from Products
    group by manufacturerid
) pc on m.id = pc.manufacturerid
order by l.`id` asc, m.`id` asc 
SELECT `manufacturers`.*, `languages`.*, COUNT(`products`.`id`) AS NumberOfProducts
FROM (`manufacturers`)
JOIN `languages` ON `manufacturers`.`lang` = `languages`.`id`
LEFT OUTER JOIN `products` ON 
      `products`.`manufacturerid` =  `manufacturers`.`manufacturerid`
GROUP BY <Column list for manufacturers AND languages here>
ORDER BY `languages`.`id` asc, `manufacturers`.`id` asc