У меня есть две первичные таблицы MySQL (профили и контакты) со многими дополнительными таблицами (с префиксом prm_). Они доступны и управляются через PHP.
В этом случае я запрашиваю таблицу профилей, где я получу идентификатор владельца и идентификатор заводчика. Затем это будет сопоставлено с таблицей контактов, где хранится информация о владельцах и селекционерах.
Я получил большую помощь здесь по другому вопросу, касающемуся объединений и псевдонимов, где мне также был предложен следующий запрос. К сожалению, я испытываю огромные трудности с отображением результатов. Каждый сайт, который имеет дело с Self Joins и Aliases, предоставляет прекрасные примеры запросов - но затем переходите к «и этим выходам и т. Д. И т. Д.». Как это выводит ????
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']);
Большое спасибо всем!