Mysql left join returns 多行
Mysql left join returns more than one row
我有 3 个 table,有些字段的名称相同。这是第一个 table 名为 semp:
第二个名字semp_k:
第三个是semp_y:
你看,主要的table是第一个,其他的都是相关的。第一个 table 有 3 行。所以当我获取它时,它必须 return 3 行。但是当我获取第一个 table 时,它会将 return 行乘以第二个和第三个 table 的总和。这是我的代码:
SELECT s.*, k.*, y.* FROM semp AS s LEFT JOIN semp_k AS k ON s.no = k.semp_no LEFT JOIN semp_y AS y ON s.no = y.semp_no WHERE s.durum = 1 ORDER BY s.bas_t DESC
使用MySQLgroup by
group by s.no
或者试试这个:-
SELECT
s.*, k.*, y.*
FROM
semp AS s
LEFT JOIN semp_k AS k ON s. NO = k.semp_no
LEFT JOIN semp_y AS y ON s. NO = y.semp_no
WHERE
s.durum = 1
GROUP BY s.no
ORDER BY
s.bas_t DESC
您需要使用分组依据。
您的查询应该是这样的;
SELECT
s.*, k.*, y.*
FROM
semp AS s
LEFT JOIN semp_k AS k ON s. NO = k.semp_no
LEFT JOIN semp_y AS y ON s. NO = y.semp_no
WHERE
s.durum = 1
GROUP BY s.no
ORDER BY
s.bas_t DESC
我有 3 个 table,有些字段的名称相同。这是第一个 table 名为 semp:
第二个名字semp_k:
第三个是semp_y:
你看,主要的table是第一个,其他的都是相关的。第一个 table 有 3 行。所以当我获取它时,它必须 return 3 行。但是当我获取第一个 table 时,它会将 return 行乘以第二个和第三个 table 的总和。这是我的代码:
SELECT s.*, k.*, y.* FROM semp AS s LEFT JOIN semp_k AS k ON s.no = k.semp_no LEFT JOIN semp_y AS y ON s.no = y.semp_no WHERE s.durum = 1 ORDER BY s.bas_t DESC
使用MySQLgroup by
group by s.no
或者试试这个:-
SELECT
s.*, k.*, y.*
FROM
semp AS s
LEFT JOIN semp_k AS k ON s. NO = k.semp_no
LEFT JOIN semp_y AS y ON s. NO = y.semp_no
WHERE
s.durum = 1
GROUP BY s.no
ORDER BY
s.bas_t DESC
您需要使用分组依据。 您的查询应该是这样的;
SELECT
s.*, k.*, y.*
FROM
semp AS s
LEFT JOIN semp_k AS k ON s. NO = k.semp_no
LEFT JOIN semp_y AS y ON s. NO = y.semp_no
WHERE
s.durum = 1
GROUP BY s.no
ORDER BY
s.bas_t DESC