【问题标题】:MySQL query with INNER JOIN and LEFT JOIN带有 INNER JOIN 和 LEFT JOIN 的 MySQL 查询
【发布时间】:2016-06-19 16:16:31
【问题描述】:

所以我有一个包含一些表的数据库。现在我想要一个从 3 个表中获取数据的查询。首先让我们看看数据库是什么

omschrijvingVoorraad
-ID             1
-userID         1
-omschrijvingID 6
-min            4

omschrijving
-ID             6
-omschrijving   Cola (blikje 330ml)

voorraad
-ID             20
-userID         1
-omschrijvingID 6
-aantal         2

现在我想做一个显示下一行的查询:

可乐(blikje 330ml) Aantal 2 minmaal 4

我四处搜索并想出了以下内容,但它不起作用。它不会给出错误,而只是一个空结果

$queryOm="SELECT omschrijvingVoorraad.ID, omschrijvingID, omschrijving, vAantal, min
        FROM omschrijvingVoorraad
        LEFT JOIN omschrijving ON omschrijving.ID = omschrijvingVoorraad.omschrijvingID
        INNER JOIN ( SELECT omschrijvingID vid, SUM( aantal ) vAantal  
            FROM voorraad WHERE userID='$userID' )  p ON vid = omschrijvingVoorraad.omschrijvingID
        WHERE userID='$userID'
        LIMIT $offset, $perPage";

$offset 和 $perPage 是在代码前面定义的。

那么谁能告诉我哪里出错了?我应该改变什么才能得到正确的结果?

【问题讨论】:

  • 输出查询,看看它是否直接在数据库上工作。如果是 PHP 或 mysql 问题,最好缩小范围。
  • 感谢 chris85 的建议。但是在 phpmyadmin 中它也给出了一个空的结果

标签: mysql left-join inner-join


【解决方案1】:

查看您的架构和预期结果似乎您需要此查询

select a.ID, a.omschrijvingID, b.omschrijving, sum(c.aantal), a.min
from omschrijvingVoorraad as a
inner join omschrijving as b on a.omschrijvingID = b.ID
inner join voorraad as c on a.omschrijvingID = c.omschrijvingID
group by a.ID, a.omschrijvingID, b.omschrijving, a.min

【讨论】:

  • 在 voorraad 表中可能有多个具有相同 omschrijvingID 的结果,所以我需要总结一下。我在某处看到您需要在查询中进行查询?
  • 我已经更新了答案.. 我认为 sum 和 group by 应该足够了
  • 感谢这确实是正在寻找的内容:) 有 3 个拼写错误,但无法编辑它,尽管第 4 行 pn 应该在最后一行缺少 .ID 之前的“a”和逗号最后很多。对于也有问题并找到此遮阳篷的人
  • 我已经更新了更正错字的答案..谢谢
猜你喜欢
  • 2015-01-10
  • 2018-07-10
  • 2016-12-14
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-18
相关资源
最近更新 更多