0

「userRoles」でも「roleName」をエコーできるように、「users」テーブルの「userTypeId」を「userRoles」テーブルの対応する「id」に一致させようとしています。

ここにテーブルがあります:

userRoles
---------------------
id  roleName
1   superuser
2   admin
3   editor
4   author
5   contributor
6   subscriber

users
---------------------
id  userName        userTypeId
1   heyjohnmurray   1
2   admin           2

このクエリを試してみましたが、チェックするたびに「WRONG」と表示されます

$roleQuery = "SELECT id, roleName, userTypeId FROM userRoles JOIN users ON id=userTypeId";
$roleResult = mysqli_query($dbconnect, $roleQuery);

if(!$roleResult){
    echo 'WRONG';
} else {
    echo 'RIGHT';
}
4

2 に答える 2

2

ALIASテーブルに を追加し、

SELECT a.id, a.roleName, b.userTypeId 
FROM   userRoles a, users b
WHERE  a.id = b.userTypeId

または形式を使用することをお勧めします ( ANSI SQL-92 )

SELECT a.id, a.roleName, b.userTypeId 
FROM   userRoles a
       INNER JOIN users b
          ON a.id = b.userTypeId
于 2012-10-30T03:38:38.717 に答える
1

テーブルにエイリアスを使用する必要があります。そうしないと、クエリで明確なエラーが発生します。これは、両方の結合テーブルに ID があるため、サーバーがテーブルからフィールドを選択するために明確な状況を強制される可能性があるためです。

 SELECT UR.id, U.roleName, U.userTypeId FROM  userRoles AS UR JOIN users AS U ON UR.id = U.userTypeId
于 2012-10-30T03:50:05.733 に答える