編集:次のコードは、質問に対する回答を示しています。VolkerK に感謝します。
$result = mysqli_query($link,"SELECT ctas.*, ctas_pr.*, nav.id
FROM web_ctas AS ctas
LEFT JOIN web_ctas_page_relation AS ctas_pr
ON ctas.id = ctas_pr.cta_id
LEFT JOIN web_navbar AS nav
ON ctas_pr.navbar_id = nav.id
AND nav.link_name = '".$page."'")
or die(mysqli_error($link)
);
おはよう/午後/夕方,
mySQL に関する特定の問題を解決していただける方がいらっしゃることを願っています。
2 つのテーブルが何らかのロジックを渡して、一致する関連フィールド データを取得しようとしてJOIN
います。コードとプロセスを少し理解できるように、プロセスとテーブルについて説明する必要があります。
「web_ctas」テーブルには、web_navbar テーブルに対応するリレーショナル フィールドがあります。
この件についてご協力いただける方には、あらかじめ多大な感謝を申し上げます。
以下に 2 つのテーブルを示します。
web_ctas
id | title | img_src | img_alt | link_href | link_title | desc
==============================================================
1 | title | pears | apples | foo | bar | blah
2 | title | apples | pears | bar | foo | bleh
web_navbar
id | link_name | visible
========================
1 | home | 1
2 | products | 1
web_ctas_page_relation
id | cta_id | navbar_id
=======================
1 | 1 | 2
2 | 2 | 2
以下は私がこれまでに持っているSQLです(これはおそらくうまくいかないことを知っています):
$query = mysqli_query($link,"SELECT web_ctas.*, web_navbar.id AS nav_id
FROM web_ctas
JOIN web_navbar
ON web_navbar.id = web_ctas.page_relation
AND page_relation='".$page."'");
以下は、SQL クエリの結果からデータを取得する HTML/PHP です。
$page = 'home';
while($row = mysqli_fetch_object($query)): ?>
<li>
<a href="<? echo $row->link_href; ?>" title="<? echo $row->link_title; ?>">
<h3><? echo $row->title; ?></h3>
<div>
<img src="<? echo $row->img_src; ?>" alt"<? echo $row->img_alt; ?>">
</div>
</a>
</li> <?
endwhile;
要するに、私が探しているのは、page_relationフィールド内にリレーショナルIDがあり、変数 $page と一致するweb_ctasの行と一致するときに、 web_navbarテーブルからlink_nameフィールドを取得する方法です。
キーコード/情報を見逃した場合はお知らせください。