提问人:Natacha BK 提问时间:1/7/2020 更新时间:1/7/2020 访问量:27
连接两个表时的MySQL案例
MySQL Case when joining two tables
问:
我有一个关于mySQL的问题:
我有两张桌子。
Table 1
在 中,我有相同的 5 idprojet,但具有各种 datedebut 和各种 datefin。table 2
我需要找到一种方法来知道每个项目的较小“datedebut”是否小于 datedebut from ,以及每个项目的最大“datefin”是否大于 datefin from 。table2
table1
table2
table1
我写了这个请求
SELECT table1.idprojet,
case when table1.datedebut < table2.tab2min then 'False'
else 'True' end as dateDebutComparison,
case when table2.dateFin > table1.dateFin then 'True'
else 'False' end as dateFinComparison
FROM table1, table2
JOIN (select table2.idProjet, MIN(dateDEBUT) tab2min, MAX(dateFIN) tab2max FROM table2 GROUP BY idProjet) table2
ON table2.idProjet = table1.idProjet
但它给了我以下错误:
Error Code: 1052. Column 'table2.idProjet' in on clause is ambiguous
喷口会是这样的
答:
1赞
Olivier Depriester
1/7/2020
#1
不需要出现在主查询中。
以下查询应该是正确的。我更改了子查询别名以避免与表名混淆。table2
table2
SELECT
table1.idprojet,
CASE WHEN table1.datedebut < minMaxTable2.tab2min THEN 'False' ELSE 'True' END AS dateDebutComparison,
CASE WHEN minMaxTable2.tab2max > table1.dateFin THEN 'True' ELSE 'False' END AS dateFinComparison
FROM table1
JOIN (SELECT table2.idProjet, MIN(table2.dateDEBUT) tab2min, MAX(table2.dateFIN) tab2max
FROM table2
GROUP BY table2.idProjet
) minMaxTable2
ON minMaxTable2.idProjet = table1.idProjet
评论
0赞
Natacha BK
1/7/2020
多谢!正是我需要的!
上一个:PHP 解析字符串作为条件运算符
下一个:用于比较表中两个值的简单内部联接
评论