いくつかのコンテキスト MySQL リクエストについて質問しました。私の投稿はそこにあります:テーブルの結合についてのヘルプが必要
現在、それに関連する別の問題があるため、私のページでデータベースからチケットをリストしています。リクエストは次のとおりです。
"SELECT
glpi_tickets.id,
glpi_tickets.name,
GROUP_CONCAT(
CASE WHEN glpi_tickets_users.type = 1 THEN
CONCAT(glpi_users.firstname, ' ', glpi_users.realname)
END) AS creator,
GROUP_CONCAT(
CASE WHEN glpi_tickets_users.type = 1 THEN
CONCAT(glpi_tickets_users.users_id)
END) AS creator_id,
GROUP_CONCAT(
CASE WHEN glpi_tickets_users.type = 2 THEN
CONCAT(glpi_users.firstname, ' ', glpi_users.realname)
END) AS users,
GROUP_CONCAT(
CASE WHEN glpi_tickets_users.type = 2 THEN
CONCAT(glpi_tickets_users.users_id)
END) AS users_id,
glpi_tickets.date,
glpi_tickets.priority,
glpi_tickets.date_mod,
glpi_itilcategories.completename,
glpi_tickets.status,
glpi_tickets.users_id_lastupdater,
GROUP_CONCAT(
CASE WHEN glpi_tickets.users_id_lastupdater = glpi_users.id THEN
CONCAT(glpi_users.firstname, ' ', glpi_users.realname)
END SEPARATOR '<br>') AS last_updater,
glpi_tickets.content
FROM
glpi_tickets
JOIN glpi_tickets_users ON glpi_tickets_users.tickets_id = glpi_tickets.id
JOIN glpi_users ON glpi_users.id = glpi_tickets_users.users_id
JOIN glpi_itilcategories ON glpi_itilcategories.id = glpi_tickets.itilcategories_id
GROUP BY
glpi_tickets.id"
結果は次のようになります。
[ID][Title][creator][date created][priority][category][status][date modified][assigned to][last update by]
[125][helpdesk test][admin][29-01-2013 21:09][low][messaging][new][30-01-2013 17:52][Tony][admin]
チケットごとに、作成者 (creator_id) とユーザー (users_id) に複数の ID と名前を含めることができます。
今、別のページにユーザー情報を表示したいのですが、同じリクエストを使用しましたWHERE glpi_users.id = ?
が、IDを取得しましたusers.php?id=x
WHERE glpi_users.id = x
1 人だけを選択するため、作成者とユーザー以外はすべて正常に動作します。
前回のリクエストのように表示する方法が欲しいです、よろしくお願いします
編集: GolezTrols ソリューションを試しましたが、機能していません。これが私のクエリです:
"SELECT
glpi_tickets.id,
glpi_tickets.name,
GROUP_CONCAT(
CASE WHEN glpi_tickets_users.type = 1 THEN
CONCAT(glpi_users.firstname, ' ', glpi_users.realname)
END) AS creator,
GROUP_CONCAT(
CASE WHEN glpi_tickets_users.type = 1 THEN
CONCAT(glpi_tickets_users.users_id)
END) AS creator_id,
GROUP_CONCAT(
CASE WHEN glpi_tickets_users.type = 2 THEN
CONCAT(glpi_users.firstname, ' ', glpi_users.realname)
END) AS users,
GROUP_CONCAT(
CASE WHEN glpi_tickets_users.type = 2 THEN
CONCAT(glpi_tickets_users.users_id)
END) AS users_id,
glpi_tickets.date,
glpi_tickets.priority,
glpi_tickets.date_mod,
glpi_itilcategories.completename,
glpi_tickets.status,
glpi_tickets.users_id_lastupdater,
GROUP_CONCAT(
CASE WHEN glpi_tickets.users_id_lastupdater = glpi_users.id THEN
CONCAT(glpi_users.firstname, ' ', glpi_users.realname)
END SEPARATOR '<br>') AS last_updater,
glpi_tickets.content
FROM
glpi_tickets
JOIN glpi_tickets_users ON glpi_tickets_users.tickets_id = glpi_tickets.id
JOIN glpi_users ON glpi_users.id = glpi_tickets_users.users_id
JOIN glpi_itilcategories ON glpi_itilcategories.id = glpi_tickets.itilcategories_id
WHERE
exists (
SELECT
'x'
FROM
glpi_tickets_users
WHERE
glpi_tickets_users.tickets_id = glpi_tickets.id AND
glpi_tickets_users.id = ? AND
glpi_tickets_users.type = 1)
GROUP BY
glpi_tickets.id"
ほとんどの場合、チケットはまったく表示されません。また、チケットは表示されますが、ユーザーとは関係がない場合もusers.php?id=1536
あります。このチケットの…