连接两个表时的MySQL案例

MySQL Case when joining two tables

提问人:Natacha BK 提问时间:1/7/2020 更新时间:1/7/2020 访问量:27

问:

我有一个关于mySQL的问题:

我有两张桌子。

Table 1

Table 1

在 中,我有相同的 5 idprojet,但具有各种 datedebut 和各种 datefin。table 2

Table 2

我需要找到一种方法来知道每个项目的较小“datedebut”是否小于 datedebut from ,以及每个项目的最大“datefin”是否大于 datefin from 。table2table1table2table1

我写了这个请求

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

喷口会是这样的

enter image description here

MySQL 联接 对比 案例

评论


答:

1赞 Olivier Depriester 1/7/2020 #1

不需要出现在主查询中。
以下查询应该是正确的。我更改了子查询别名以避免与表名混淆。
table2table2

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
多谢!正是我需要的!