2

以下のスクリプトを実行しようとしていますが、名前フィールドに常に NULL 値が返されます。

SELECT u.name AS _user_name, s.name AS _school_name
FROM fwg_files AS f
LEFT JOIN users AS u ON u.id = f.user_id
LEFT JOIN user_profiles AS up ON up.user_id = u.id
LEFT JOIN school AS s ON s.id = up.profile_value

JOIN ON school テーブルで問題が発生したようです。SELECT s.id を試みたところ、NULL 値も返されました。最後の行を RIGHT JOIN に変更すると機能し始めますが、s.name の値だけが表示され、他の値は NULL です。

テーブル fwg_files

id  | user_id
240 | 414
241 | 436

テーブル ユーザー

id  | name
414 | Name 1
436 | Name 2

表 user_profiles

user_id | profile_value
414     | "6"
436     | "14"

テーブルスクール

id | name

 6 | School 1
14 | School 2

ありがとうございました

4

1 に答える 1

2

列の引用符が必須の場合は、操作を実行できるようにするために、との組み合わせを使用して引用符を削除する必要がありますprofile_valueCONVERTSUBSTRING_INDEX

次のコードを確認してください。

SELECT users.name as User, s.name as School
  FROM fwg_files AS ff
  LEFT JOIN users ON users.id = ff.user_id
  LEFT JOIN user_profiles AS up ON up.user_id = users.id
  LEFT JOIN school AS s ON s.id = CONVERT(SUBSTRING_INDEX(up.profile_value,'"',-2),UNSIGNED INTEGER);

そして、ここでは引用符付きのSQLFiddleコードが機能しています。

于 2013-02-26T13:41:24.863 に答える