私は2つのテーブルを持っています。1つは場所用、もう1つはスタッフ用です。ロケーションテーブルには、contact1、contact2、partnerの3つのフィールドがあります。スタッフテーブルから名前、メールアドレス、電話番号を選択して表示するには、これらのそれぞれが必要です。一度に1つの連絡先を引っ張ることしかできないようです。これが私が持っているものです
SELECT officelocations_tbl.*, staff_tbl.*, city_tbl.*, state_tbl.*
FROM officelocations_tbl
JOIN city_tbl ON officelocations_tbl.cityID = city_tbl.cityID
JOIN state_tbl ON officelocations_tbl.stateID = state_tbl.stateID
JOIN staff_tbl ON staff_tbl.staffID = officelocations_tbl.contact1
これには、オフィス情報と1つの連絡先のみが表示されます。
SELECT officelocations_tbl.*, staff_tbl.*, city_tbl.*, state_tbl.*
FROM officelocations_tbl
JOIN city_tbl ON officelocations_tbl.cityID = city_tbl.cityID
JOIN state_tbl ON officelocations_tbl.stateID = state_tbl.stateID
JOIN staff_tbl ON staff_tbl.staffID = officelocations_tbl.contact1
JOIN staff_tbl ON staff_tbl.staffID = officelocations_tbl.contact2
JOIN staff_tbl ON staff_tbl.staffID = officelocations_tbl.partner
ただし、これを行うとエラーが発生します
警告:mysql_fetch_assoc():指定された引数は....の有効なMySQL結果リソースではありません。
StaffIDを使用して、別のテーブルの3つの異なるフィールドにリンクすることにより、それらを一覧表示する別の方法はありますか?
ここで解決策を試しました結合/サブクエリを適切に使用して複数のテーブルからデータを選択する方法は?(PHP-MySQL)ただし、fromセクションの2番目のselectステートメントは認識されません。concatも試してみましたが、有効なSQLクエリではなく、内部結合でも同じであると表示されました。私はphp/mysqlデータベースを使用しています。私が上に投稿したメッセージは、そのページの例のいずれかを使用したときに私が受け取り続けたものです。変更されたのは、エラーがスローされた行だけでした。
私は4つの別々のSQLステートメントを作成することを考えていました。私はこれを行う方法があることを知っていますが、私が試したものはうまくいかないようです。
助けてくれてありがとう。
以下にレンダリングされた支援の後に編集
わかりました。表示しましたが、sf1の連絡先情報を表示するように指示すると、13個あるはずのエントリが2つしか表示されないという小さな問題があります。表示できる場所は全部で29か所あります。すべての場所にcontact1またはcontact2があるわけではありませんが、すべての場所にパートナーがあります。これがあなたの提案を反映するために私が編集したコードです:
$sql_locations = "SELECT officelocations_tbl.*,
sf1.firstName AS c1Firstname, sf1.lastName AS c1lastName, sf1.middleInitial AS c1middleInitial, sf1.suffix AS c1suffix, sf1.accredations AS c1accredations,
sf2.firstName AS c2Firstname, sf2.lastName AS c2lastName, sf2.middleInitial AS c2middleInitial, sf2.suffix AS c2suffix, sf2.accredations AS c2accredations,
sf3.firstName AS c3Firstname, sf3.lastName AS c3lastName, sf3.middleInitial AS c3middleInitial, sf3.suffix AS c3suffix, sf3.accredations AS c3accredations,
city_tbl.*, state_tbl.*
FROM officelocations_tbl
JOIN city_tbl ON (officelocations_tbl.cityID = city_tbl.cityID)
JOIN state_tbl ON (officelocations_tbl.stateID = state_tbl.stateID)
JOIN staff_tbl sf1 ON (sf1.staffID = officelocations_tbl.contact1)
JOIN staff_tbl sf2 ON (sf2.staffID = officelocations_tbl.contact2)
JOIN staff_tbl sf3 ON (sf3.staffID = officelocations_tbl.partner)";
$result_loc = mysql_query($sql_locations);
while ($db_field = mysql_fetch_assoc($result_loc)) {
if ($db_field['c2Firstname'] == ""){
print $db_field['officeName'] . "<BR>";
print $db_field['address1'] . "<BR>";
print $db_field['cityName'] . ", " . $db_field['state_abreviation'] . " " . $db_field['zipCode']."<BR>";
print $db_field['c1Firstname'] . " " . $db_field['c1lastName'] . " ". $db_field['c1middleInitial'] . " ". $db_field['c1suffix']. " ". $db_field['c1accredations'] . "<BR><BR><BR><BR>";
print $db_field['c3Firstname'] . " " . $db_field['c3lastName'] . " ". $db_field['c3middleInitial'] . " ". $db_field['c3suffix']. " ". $db_field['c3accredations'] . "<BR>";
}else if ($db_field['c2Firstname'] != ""){
print $db_field['officeName'] . "<BR>";
print $db_field['address1'] . "<BR>";
print $db_field['cityName'] . ", " . $db_field['state_abreviation'] . " " . $db_field['zipCode']."<BR>";
print $db_field['c1Firstname'] . " " . $db_field['c1lastName'] . " ". $db_field['c1middleInitial'] . " ". $db_field['c1suffix']. " ". $db_field['c1accredations'] . "<BR>";
print $db_field['c2Firstname'] . " " . $db_field['c2lastName'] . " ". $db_field['c2middleInitial'] . " ". $db_field['c2suffix']. " ". $db_field['c2accredations'] . "<BR>";
print $db_field['c3Firstname'] . " " . $db_field['c3lastName'] . " ". $db_field['c3middleInitial'] . " ". $db_field['c3suffix']. " ". $db_field['c3accredations'] . "<BR><BR><BR><BR>";
}
私はifステートメントに言わせようとしました
if ($db_field['c1Firstname'] != "" && $db_field['c2Firstname'] == "")
しかし、それもうまくいかなかったようです。