我正在尝试选择有关客户端的信息,但PMA返回了多行。
SELECT `clients_agreements`.`date_start`,
`buildings`.`id`,
`buildings`.`street`,
`buildings`.`street_nr`,
`clients`.`building_id`,
`clients_agreements`.`user_id`
FROM `clients_agreements`
LEFT JOIN `buildings` On `clients_agreements`.`user_id` = `buildings`.`id`
LEFT JOIN `clients` ON `clients`.`building_id` = `buildings`.`id`
WHERE `date_start` = (CURRENT_DATE)
我希望有一个输出,但实际输出是多次相同的行。
答案 0 :(得分:1)
该联接产生笛卡尔积,因此,如果仅需要不同的结果,请使用DISTINCT
filterUsersByEmailDomain
答案 1 :(得分:0)
尝试
SELECT DISTINCT `clients_agreements`.`date_start`,
`buildings`.`id`,
`buildings`.`street`,
`buildings`.`street_nr`,
`clients`.`building_id`,
`clients_agreements`.`user_id`
FROM `clients_agreements`
LEFT JOIN `buildings` On `clients_agreements`.`user_id` = `buildings`.`id`
LEFT JOIN `clients` ON `clients`.`building_id` = `buildings`.`id`
WHERE `date_start` = (CURRENT_DATE)
答案 2 :(得分:0)
FWIW,我觉得这更容易阅读:
SELECT a.date_start
, b.id
, b.street
, b.street_nr
, c.building_id
, a.user_id
FROM clients_agreements a
LEFT
JOIN buildings b
On b.id = a.user_id
LEFT
JOIN clients c
ON c.building_id = b.id
WHERE a.date_start = CURRENT_DATE()