2

次の条件からデータを取得するときに問題があります。

テーブルUSERS (id、ユーザー名、first_name、last_name、user_type、ステータス);

----------------------------------
|1 | bsmith | Bob | Smith | 1 | 1|
----------------------------------

テーブルUSER_TYPE (コード、説明)

-----------
|1 | admin|
|2 | guest|
-----------

テーブルSTATUS_TYPE (id、説明)

-------------
|1 | active |
|2 | suspend|
-------------

次に、次の SQL クエリを使用します。

$sql = "SELECT u.id uid, username, last_name, first_name,
      status, t.description status_desc, user_type, w.description type_desc  
      FROM users u 
      LEFT JOIN status_type t ON u.status = t.id
      LEFT JOIN user_type w ON u.user_type = w.code
      ";

上記のSQLステートメントを実行すると、PHP経由でデータが返されません。ただし、mySQL コマンド ライン クライアントでは問題なく動作します。

また、PHP で左結合を 1 つだけ実行すると、正常に動作します。

4

3 に答える 3

1

status_type / user_status の問題を修正したようです。これらはまだ持っている

また、クエリには次のものがあります。

FROM users u

もう一度元の説明で、テーブル名はユーザーではなくユーザーであると言います。

そして、より多くのタイプミス:

LEFT JOIN status_type t ON u.status = t.code
LEFT JOIN user_type w ON u.user_type = w.id

user_type には ID ではなくコードがあり、status_type にはコードではなく ID があります。次のようにする必要があります。

LEFT JOIN status_type t ON u.status = t.id
LEFT JOIN user_type w ON u.user_type = w.code
于 2012-11-20T15:32:20.730 に答える
0

「u.id」の後にカンマがないか、u.idの後にASがありません。

SELECT u.id, uid, ...

または(より可能性が高い):

SELECT u.id AS uid, ...
于 2012-11-20T15:27:46.193 に答える
0

これをPHPファイルに入れて、出力をここに置くとどうなりますか:

$sql = ''; //USE THE STRING IN YOU'RE POST ABOVE
$query = mysql_query($sql); 
$result = mysql_fetch_object($query); 

echo '----' . "<br/>";
echo 'the result:' . "<br/>";  
print_r($result, true) . "<br/>"; 
echo '----' . "<br/>";
echo 'the error' . "<br/>";
echo mysql_error() . "<br/>"; 
echo '-----' . "<br/>";

自分のクエリを次のクエリに置き換えることはできますか (コメントアウトすることを忘れないでください)。

SELECT
     `user`.`id` AS 'uid',
     `user`.`username`, 
     `user`.`last_name`,
     `user`.`first_name`,
     `user`.`status`,
     `user`.`user_type` AS 'type',
     `status_type`.`desciption` AS 'type_desc',
     `user_type`.`description` AS 'status_desc'
FROM `users` 
LEFT JOIN `status_type` ON `status_type`.`id` = `user`.`status`
LEFT JOIN `user_type` ON `user_type`.`code` = `user`.`user_type`
于 2012-11-20T15:31:59.943 に答える