1

3 番目のテーブルを使用して、同じデータベース内の 2 つのテーブルをリンクしようとしています。

最初のテーブルは製品で、製品コードがあります。2 番目のテーブルは shop で、shopcode があります。3 番目のテーブルには、ショップコードと対応する製品コードがあります。

ただし、すべての製品が販売されているわけではなく、結果でそれらの製品が削除されるだけです。

これにより、リストが 1600 から 753 に縮小されますが、製品とショップのリストを確認したいのは二次的な問題です。

そのため、行全体を削除する代わりに、エリアをグレーのままにするか、NULL を指定して、テーブルを販売している店がないことをテーブルに伝えたいと思います。

私が使用した:

SELECT * FROM product, sells
WHERE product.productcode = sells.shopcode 
ORDER BY product.productcode.

グーグルと数人の友人を使って見つけようとしましたが、答えが見つからないようです。

Jell0zz の皆さん、ありがとうございました

編集:たまごの助けの後、私は正しいテーブルにすべてを持っていますが、少なくともfirefoxでは、別の問題は、テーブルの境界を離れる代わりに値がない場合、空のスペースが残ることです。これにより、パーツがあるように見えますない。また、最初の列にproductIDを入力しましたが、productIDも販売されている場合にのみ表示され、そうでない場合は空のスペースも残ります。

コード:

$sql = 'SELECT * FROM bier LEFT JOIN schenkt ON bier.biercode = schenkt.biercode LEFT JOIN kroeg ON schenkt.kroegcode = kroeg.kroegcode'; $resultaat = $db->query($sql); echo '<table border = 0>'; echo "<tr> <td style = 'width:100%;'>"; echo '<table border = 1>'; foreach($resultaat as $row) { echo '<tr>'; $nummer = $row['bier.biercode']; echo '<td>'.$row['bier.biercode'].'</td>'; echo '<td>'.$row['naam'].'</td>'; echo '<td>'.$row['type'].'</td>'; echo '<td>'.$row['stijl'].'</td>'; echo '<td>'.$row['alcohol'].'</td>'; echo '<td>'.$row['kroegnaam'].'</td>'; echo '<td>'.$row['adres'].'</td>'; echo '<td>'.$row['plaats'].'</td>';

t1=bier (または英語でビール) t2=schenkt (または販売) および t3=kroeg (またはバー) であることに注意してください。

免責事項、私はアルコール依存症ではありませんが、私の先生はそうかもしれません ;)

4

1 に答える 1

3
SELECT * FROM Products t1

LEFT JOIN myBridgeTable t2
ON t1.ProductID = t2.ProductID

LEFT JOIN Shops t3
ON t2.ShopID = t3.ShopID
于 2012-06-15T19:42:12.930 に答える