昨晚我有一个问题要确保我已经正确格式化了php,以确保能够测试出该查询。今天,在mysql工作台上工作时,我发现无法获得所需的所有结果。我的“联系人”表中目前有15行,但是当我运行以下代码时,只有8行通过。请注意,我正在使用多个表,但是这些表中的某些表每个联系人具有多个行,而某些表在同一表中没有行,而某些行则有多个行。
SELECT
`Contact`.`firstName`,
`Contact`.`lastName`,
`ssn`.`ssn`,
`Contact`.`country`,
`Allergies`.`allergy`,
`Allergies`.`allergyType`,
`Allergies_Contact`.`allergyNotes`,
`CurrentPrescriptions`.`prescriptionName`,
`CurrentPrescriptions`.`prescribedDate`,
`BloodType`.`bloodType`
FROM
`mher`.`Contact`,
`mher`.`Allergies_Contact`,
`mher`.`Allergies`,
`mher`.`ssn`,
`mher`.`CurrentPrescriptions`,
`mher`.`BloodType`
WHERE
`Contact`.`contactKey` = `Allergies_Contact`.`contactKey`
AND `Allergies`.`allergiesKey` = `Allergies_Contact`.`allergiesKey`
AND `ssn`.`contactKey` = `Contact`.`contactKey`
AND `CurrentPrescriptions`.`contactKey` = `Contact`.`contactKey`
AND `BloodType`.`contactKey` = `Contact`.`contactKey`;
最佳答案
您能否进行一下,我在不需要输入以下项的表上进行了左联接:
SELECT
`Contact`.`firstName`,
`Contact`.`lastName`,
`ssn`.`ssn`,
`Contact`.`country`,
`Allergies`.`allergy`,
`Allergies`.`allergyType`,
`Allergies_Contact`.`allergyNotes`,
`CurrentPrescriptions`.`prescriptionName`,
`CurrentPrescriptions`.`prescribedDate`,
`BloodType`.`bloodType`
FROM
`mher`.`Contact`
INNER JOIN `mher`.`ssn`
ON `ssn`.`contactKey` = `Contact`.`contactKey`
INNER JOIN `mher`.`BloodType`
ON `BloodType`.`contactKey` = `Contact`.`contactKey`
LEFT JOIN `mher`.`Allergies_Contact`
ON `Contact`.`contactKey` = `Allergies_Contact`.`contactKey`
LEFT JOIN `mher`.`Allergies`
ON `Allergies`.`allergiesKey` = `Allergies_Contact`.`allergiesKey`
LEFT JOIN `mher`.`CurrentPrescriptions`
ON `CurrentPrescriptions`.`contactKey` = `Contact`.`contactKey`
;