2

私は現在 2 つのテーブルを持っています。たとえば、Table_A には何百ものサンドイッチとその情報と写真が含まれており、Table_B には特定のサンドイッチ グループが含まれているとします。例えば:

Table_A には 4 つの列があります。

  • 自動インクリメントの列 1「id」
  • ミートボール サンドイッチ 1、ミートボール サンドイッチ 2、ミートボール サンドイッチ 3、ターキー サンドイッチ 1 などを含む列 2 "sandwich_name"
  • 列 3 の「サンドイッチの種類」。この場合は、ミートボール サンドイッチ、ミートボール サンドイッチ、ミートボール サンドイッチ、ターキー サンドイッチになります。
  • 列 4 の「sandwich_picture」列には、写真へのリンクが含まれています。

Table_B は、サンドイッチを分類するのに役立ちます。

  • Table_A の列 3 に対応する「sandwich_category」という列 1 には、「Meatball Sandwich」、「Turkey Sandwich」というタイトルが含まれています。
  • 列 2 の「featured_sandwich_id」では、目玉の画像を取得する SELECT ステートメントがある Table_A からサンドイッチの ID を選択できます。

    SELECT featured_sandwich_id FROM Table_B WHERE sandwich_category='Meatball Sandwich' AND featured_sandwich_id != 0
    

次に、注目のサンドイッチ画像をロードする if/while コードがあります。

私が抱えている問題は、場合によっては、Table_Bに独自のsandwich_category行をまだ持っていないTable_Aに新しいsandwich_typeが存在することです。 Table_A から。つまり、注目のサンドイッチ ID が Table_B にまだ設定されていない場合、select ステートメントで、最近投稿されたサンドイッチの ID と画像を Table_A から自動的に取得するようにしたいと考えています。

より具体的に、コードに実行してもらいたい手順を書き出すようにします。

  • サンドイッチ カテゴリの種類ごとに 1 つの自動作成された div。
  • 2: Div には、Table_B のサンドイッチ カテゴリ名が含まれており、Featured_sandwich_id が Table_B に設定されているかどうかを確認します。
  • 3: featuring_sandwich_id が設定されている場合は、Table_A のサンドイッチ ID に関連付けられた画像を取得します。
  • 4: Featured_sandwich_id が設定されていない場合 (または、何らかの理由で Sandwich_category が Table_B にまだ詳細に記載されていない場合)、sandwich_category の名前と、sandwich_category の最新のサンドイッチの画像を使用し、上記の div に入力します。

これが私の現在のコードです:

    $QUERY = "(
    SELECT Table_A.sandwich_picture, Table_A.sandwich_type, Table_B.featured_sandwich_id 
    FROM Table_A 
    LEFT JOIN Table_B 
    ON (Table_A.id = Table_B.featured_sandwich_id) 
    WHERE (Table_A.sandwich_type = 'Meatball Sandwich') 
    LIMIT 1)"

上記の LEFT JOIN には、「ミートボール サンドイッチ」と他のすべてのサンドイッチ タイプのイメージがありますが、関連付けられた Featured_sandwich_id のイメージではありません。

上記のステートメントを RIGHT JOIN に切り替えると、常に「ミートボール サンドイッチ」およびその他のサンドイッチ タイプの Featured_sandwich_id の画像が含まれますが、featured_sandwich_id がテーブルに設定されていない場合、結果は 0 になります。

例として、残りの PHP を次に示します。

    ... while($query_results){

    echo '<div class="sandwich_category">
    <img src="$query_results['sandwich_picture']">
    <br>
    <p class="sandwich_category_name">';
    echo $query_results['sandwich_category']; // This is the category name
    echo '</p>
    </div>';

    }

リソースを節約するために単一のステートメントにまとめるのが最善であることは理解していますが、正しいタイプの結合を理解することはできません。

これを達成する方法について何か考えはありますか?

4

1 に答える 1