我有两个主要的 MySQL 表(配置文件和联系人)和许多补充表(以 prm_ 为前缀)。它们是通过 PHP 访问和操作的。
在本例中,我正在查询配置文件表,我将在其中检索所有者 ID 和饲养者 ID。然后,这将在保存所有者和饲养者信息的联系人表中进行引用。
我在另一个关于连接和别名的问题上得到了很大的帮助,在那里我还获得了以下查询。不幸的是,我在实际回应结果时遇到了巨大的困难。每个处理自连接和别名的站点都提供了很好的查询示例——然后跳到“和这个输出等等等等”。怎么输出???
SELECT *
FROM (
SELECT *
FROM profiles
INNER JOIN prm_breedgender
ON profiles.ProfileGenderID = prm_breedgender.BreedGenderID
LEFT JOIN contacts ownerContact
ON profiles.ProfileOwnerID = ownerContact.ContactID
LEFT JOIN prm_breedcolour
ON profiles.ProfileAdultColourID = prm_breedcolour.BreedColourID
LEFT JOIN prm_breedcolourmodifier
ON profiles.ProfileColourModifierID = prm_breedcolourmodifier.BreedColourModifierID
) ilv LEFT JOIN contacts breederContact
ON ilv.ProfileBreederID = breederContact.ContactID
WHERE ProfileName != 'Unknown'
ORDER BY ilv.ProfileGenderID, ilv.ProfileName ASC $limit
再加上以下 PHP:
$owner = ($row['ownerContact.ContactFirstName'] . ' ' . $row['ownerContact.ContactLastName']);
$breeder = ($row['breederContact.ContactFirstName'] . ' ' . $row['breederContact.ContactLastName']);
除了联系人(性别、颜色等)之外的所有细节都可以返回。和变量为空$owner
。$breeder
为我解决这个问题的任何帮助将不胜感激。
编辑:我最后的工作查询:
SELECT ProfileOwnerID, ProfileBreederID,
ProfileGenderID, ProfileAdultColourID, ProfileColourModifierID, ProfileYearOfBirth,
ProfileYearOfDeath, ProfileLocalRegNumber, ProfileName,
owner.ContactFirstName AS owner_fname, owner.ContactLastName AS owner_lname,
breeder.ContactFirstName AS breeder_fname, breeder.ContactLastName AS breeder_lname,
BreedGender, BreedColour, BreedColourModifier
FROM profiles
LEFT JOIN contacts AS owner
ON ProfileOwnerID = owner.ContactID
LEFT JOIN contacts AS breeder
ON ProfileBreederID = breeder.ContactID
LEFT JOIN prm_breedgender
ON ProfileGenderID = prm_breedgender.BreedGenderID
LEFT JOIN prm_breedcolour
ON ProfileAdultColourID = prm_breedcolour.BreedColourID
LEFT JOIN prm_breedcolourmodifier
ON ProfileColourModifierID = prm_breedcolourmodifier.BreedColourModifierID
WHERE ProfileName != 'Unknown'
ORDER BY ProfileGenderID, ProfileName ASC $limit
然后我可以通过以下方式输出:
$owner = ($row['owner_lname'] . ' - ' . $row['owner_fname']);
非常感谢大家!