私はカテゴリとcat_pagesと呼ばれる2つのテーブルがあります。一意の結果行を持つMYSQL JOIN
カテゴリテーブルには、ID、タイトル、タイムスタンプの列があります。例えば:私は、このような
-
ことを、IDのcat_pagesテーブルでカテゴリテーブルに参加しようとしている
- category_pagesテーブルにidがあるカテゴリのみが取得され、
- 各カテゴリは結果セットに1回表示されます
CREATE TABLE cat_pages (
cat_id INT UNSIGNED
REFERENCES categories (id)
ON DELETE CASCADE ON UPDATE CASCADE,
page_id INT UNSIGNED
REFERENCES pages (id)
ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE INDEX (cat_id, page_id),
INDEX (page_id, cat_id),
) Engine=InnoDB;
:
CREATE TABLE categories (
id INT UNSIGNED PRIMARY KEY,
title VARCHAR(32),
`timestamp` TIMESTAMP,
INDEX (title)
) Engine=InnoDB;
cat_pagesは2列、CAT_IDとpage_idのを持っています
クエリ:
SELECT * FROM categories as c
LEFT JOIN cat_pages as p ON c.id = p.cat_id
はcat_pagesテーブル内の複数の一致があるようにカテゴリ(複数回繰り返した結果セットを生成します。 cat_pagesテーブルに一致するものがない場合、各カテゴリは一度しか表示されないようにするには何が必要ですか?
あなたの質問からLEFTを落として、最初のポイント – Dalen
のコードはキングです。テーブルを記述するための最良の方法は、テーブル作成ステートメントとサンプルデータのためのINSERTステートメントを与えることです。あなたが提供した 'SELECT'クエリは、あなたが望むものを記述するのに非常に役立ちました。 – outis