【问题标题】:Problems with inner join SQL内连接 SQL 的问题
【发布时间】:2017-10-06 05:23:36
【问题描述】:

基本上我正在使用 2 张桌子,一张是汽车,一张是 cmets,我正在尝试获取某些汽车的批准 cmets 的数量 + 汽车信息,但如果我输入,我希望它是动态的汽车的 id 直接它会起作用,但是当我说 where id = car id 它什么也不返回?

这适用于“10”,它将为我提供信息 + cmets 的计数

SELECT t1.biler_id, t1.biler_navn, COUNT(t2.bilbixen_commentary_status) 
FROM bilbixen_biler t1 
INNER JOIN bilbixen_commentary t2 ON t1.biler_id = t2.bilbixen_commentary_bil
WHERE t1.biler_id = 10

上面的查询会在 phpmyadmin 中返回这个

下面的查询不起作用,我试图告诉它找到 t1.id 等于 t2.id 的所有内容

SELECT t1.biler_id, t1.biler_navn, COUNT(t2.bilbixen_commentary_status) 
FROM bilbixen_biler t1 
INNER JOIN bilbixen_commentary t2 ON t1.biler_id = t2.bilbixen_commentary_bil
WHERE t1.biler_id = t2.bilbixen_commentary_bil

上面的查询会在 phpmyadmin 中给我这个错误

我希望它能够返回每辆车的所有信息以及每辆车的 cmets 计数

【问题讨论】:

    标签: php sql mysqli inner-join


    【解决方案1】:

    您的where 子句没有用,您需要一个group by 子句,因为您使用的是聚合函数count

    select t1.biler_id,
        t1.biler_navn,
        COUNT(t2.bilbixen_commentary_status)
    from bilbixen_biler t1
    left join bilbixen_commentary t2 on t1.biler_id = t2.bilbixen_commentary_bil
    group by t1.biler_id,
        t1.biler_navn
    

    【讨论】:

    • 这更好,但我仍然需要来自 t1 的所有记录,其中 t2 中有 0 cmets,因为我将输出带有“与汽车相关的多少 cmets 的对话气泡”的卡片,所以如果他们在 t2 没有 cmet
    • @iiiml0sto1 - 然后改为左连接。已更新。
    • 哦,是的,当然,那我不只是得到关系......需要咖啡,谢谢伙计:)
    【解决方案2】:

    您使用了聚合函数COUNT,因此您必须按t1.biler_id, t1.biler_navn 字段分组:

    SELECT t1.biler_id, t1.biler_navn, COUNT(t2.bilbixen_commentary_status) 
    FROM bilbixen_biler t1 
    INNER JOIN bilbixen_commentary t2 ON t1.biler_id = t2.bilbixen_commentary_bil
    GROUP BY t1.biler_id, t1.biler_navn
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 1970-01-01
      • 2018-03-11
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多