1

問題:

採点テーブル (betyg_essays) の 2 つの列の ID を別のテーブル (betyg_users) のユーザーの実名に「変換」しようとしています。

採点表 (betyg_essays) は次のようになります。

ここに画像の説明を入力

ユーザー テーブル (betyg_users) は次のようになります。

ここに画像の説明を入力

PHP コード (これまで):

$query = 'SELECT * FROM betyg_essays JOIN betyg_users ON betyg_essays.Examiner = betyg_users.UID';

Examiner/Supervisor 列 (betyg_essays) は UID 列 (betyg_users) に対応します。

必要な出力は次のようになります (Firstname/Lastname 列を使用):

  1. 試験官: ジョン・ホプキンス。スーパーバイザー: マイク・ベイカー。
  2. 試験官: ジョン・ホプキンス。スーパーバイザー: マイク・ベイカー。

機能しない SQL クエリ:

$query = "SELECT 
            (u1.Firstname + ' ' + u1.Lastname) AS Examiner, 
            (u2.Firstname + ' ' + u2.Lastname) AS Supervisor
        FROM betyg_essays grade
            INNER JOIN betyg_users u1 ON grade.Examiner = u1.UID
            INNER JOIN betyg_users u2 ON grade.Supervisor = u2.UID";
4

4 に答える 4

2

最終的解決:

$query = "SELECT 
            CONCAT (u1.Firstname, ' ', u1.Lastname) AS Examiner, 
            CONCAT (u2.Firstname, ' ', u2.Lastname) AS Supervisor
        FROM betyg_essays grade
            INNER JOIN betyg_users u1 ON grade.Examiner = u1.UID
            INNER JOIN betyg_users u2 ON grade.Supervisor = u2.UID";
于 2012-06-10T11:48:00.340 に答える
2
SELECT
CONCAT(u1.FirstName, ' ', u1.LastName) AS Examiner,
CONCAT(u2.FirstName, ' ', u2.LastName) AS Supervisor
FROM betyg_essays e
INNER JOIN betyg_users u1 ON e.Examiner = u1.UID
INNER JOIN betyg_users u2 ON e.Supervisor = u2.UID

私はコードを試していません。いくつかの調整が必要かもしれません。

更新: ID を修正しました

INNER JOIN betyg_users u2 ON e.Supervisor = u2.UID

更新 2:

+ を CONCAT 関数に変更しました。どうやら、MySQL は SQL Server とは異なる方法で文字列を処理します。

于 2012-06-10T11:13:48.953 に答える
2

ここでは、user_table に最初に 2 回参加して審査官のユーザー名を取得し、2 回目にスーパーバイザーのユーザー名を取得する必要があります。

SELECT (g1.FirstName + ' ' + g1.LastName) AS Examiner,' , (g2.FirstName + ' ' + g2.LastName) AS Supervisor
FROM grading_table grade
INNER JOIN user_table g1 ON grade.examiner = g1.uid
INNER JOIN user_table g2 ON grade.supervisor = g2.uid
于 2012-06-10T11:15:49.267 に答える
1

これを試して

SELECT CONCAT(betyg_users.`Firstname`," ",betyg_users.`Lastname`) AS `examiner_name`,
CONCAT(betyg_users.`Firstname`," ",betyg_users.`Lastname`) AS `superviser_name`
FROM `betyg_essays`
INNER JOIN `betyg_users` ON betyg_essays.`Examiner` = betyg_users.`UID` 
INNER JOIN `betyg_users` ON betyg_essays.`Supervisor` = betyg_users.`UID`;
于 2012-06-10T11:15:41.000 に答える