私は次のSQLを持っています:
$queryString = "
SELECT
iR.lastModified,
d.*,
c2.title as stakeholderTitle,
u.username as authorUsername,
c.title as authorContactName,
GROUP_CONCAT(iR.stakeholderRef) AS participants
FROM
informationRelationships iR,
contacts c2
INNER JOIN
debriefs d ON
d.id = iR.linkId
LEFT JOIN
users u ON
u.id = iR.author
LEFT JOIN
contacts c ON
c.ref = u.contactId
LEFT JOIN
debriefs d2 ON
d2.stakeholder = c2.ref
WHERE
(
iR.clientRef = '$clientRef' OR
iR.contactRef = '$contactRef'
)
AND
iR.projectRef = '$projectRef' AND
iR.type = 'Debrief'
GROUP BY
iR.linkId
ORDER BY
d.dateOfEngagement
";
連絡先テーブルに 2 つの異なるビットのデータが必要であることに注意してください。
だからある時点で、私は一致する必要があります
c.ref = u.contactId
これにより、1ビットの情報が返されます
しかし、まったく別のグループ化も必要です。
d2.stakeholder = c2.ref
問題は、タイトルが両方に興味のある列であることです:
c2.title as stakeholderTitle,
...
c.title as authorContactName
どうすればこれを行うことができますか?
私の現在の試みは戻ってきています:
Error: Unknown column 'iR.linkId' in 'on clause'
ここで何が起こっているのか本当に理解しているかどうかはわかりません:
mysql と php の共通属性で 2 つのテーブルを結合する方法は?
編集::::---回答済み--zerkms
$queryString = "
SELECT
iR.lastModified,
d.*,
c2.title as stakeholderTitle,
u.username as authorUsername,
c.title as authorContactName,
GROUP_CONCAT(iR.stakeholderRef) AS participants
FROM
informationRelationships iR
INNER JOIN
debriefs d ON
d.id = iR.linkId
INNER JOIN
contacts c2 ON
d.stakeholder = c2.ref
LEFT JOIN
users u ON
u.id = iR.author
LEFT JOIN
contacts c ON
c.ref = u.contactId
WHERE
(
iR.clientRef = '$clientRef' OR
iR.contactRef = '$contactRef'
)
AND
iR.projectRef = '$projectRef' AND
iR.type = 'Debrief'
GROUP BY
iR.linkId
ORDER BY
d.dateOfEngagement
";
クエリの順序を変更することで、両方の列を取得することができました... zerkms に感謝します!