MySQL JOINに問題があり、誰かが私を助けてくれるのだろうかと思っていました。私が参加しているテーブルの実際の概要。SQLに問題があります。JOIN
User
表の列(この場合は問題だけの列):
userId | active | role | username | addressId
Address
表の列(この場合は問題だけの列):
addressId | firstName | lastName
ManagerRepRelationship
テーブル
repId | managerId
は、これらのテーブル間の関係です:新しいユーザーが作成されると
、彼らはキー(のuserId)を割り当てられますし、そのアドレス情報は、キー(あるAddressId)と住所にそれ自身の行を取得します。そのaddressIdキーは、User行にユーザーテーブルを持つストアを取得します。
また、ユーザーが作成されると、「マネージャー」または「代理人」という2つの役割のいずれかが割り当てられます。彼らが代理人である場合は、マネージャに割り当てなければなりません(担当者がなる前にマネージャを作成する必要があることは明らかです)。担当者がマネージャに割り当てられて作成されると、
userID
がrepId
列のManagerRepRelationship
に格納され、同時にこの担当者のuserId
がmanagerId
列の同じ行に格納されます。
これは私が抱えている問題です。代表者の編集については、その担当者に割り当てられているマネージャーの名前を上部に表示したいと思います。編集ページでは、編集した代理人のuserId
をURLに渡していますので、$_GET["userID']
で利用できます。
編集中の担当者ではなく、マネージャの姓名を取得するために正しいJOIN文を書いているようです。ここまでは私がこれまで持っていたものですが、私はnullになっています。私はこれを十分に説明してくれることを望みます。
<?php
$user_id = $_GET["userId"]; // the rep getting edited userId
// grab all the reps address info and user info
$user_result = mysqli_query($connection,
"SELECT Users.*, Address.*
FROM Users
JOIN Address
ON Users.addressId=Address.addressId
WHERE Users.userId=" . $user_id
);
$user_set = mysqli_fetch_array($user_result);
// Trying to get the first and last name of the manager
// That is assigned to this rep
$result = mysqli_query($connection,
"SELECT A.firstName, A.lastName
FROM Address A
JOIN Users U
ON A.addressId=U.addressId
JOIN ManagerRepRelationship M
ON M.repId=U.userId AND M.managerID=U.userId
WHERE U.role='manager' AND M.repId=" . $user_id
);
$managerName = mysqli_fetch_array($result);
?>
申し訳ありません。ちょっと待って。私はこれを編集する必要があります。 –
整数である –
クエリのエラーをhttp://php.net/manual/en/mysqli.error.phpでチェックし、おそらくエラー報告http://php.net/manual/en/function.error-reporting .php –