2つのプライマリ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']);
みんなに感謝します!