2

私は前にこのような結合をしたことがありません

基本的に、次の構造を持つ2つのテーブルがあります。

categories:
- id - int
- name - varchar
- show_in_menu - varchar
- sort_order - int

pages:
- id - int
- name - varchar
- show_in_menu - varchar
- sort_order - int

すべてのカテゴリとページを選択してリストに吐き出し、sort_order フィールドで並べ替えるクエリを作成しようとしていますが、show_in_menu == 'Yes' の行のみを選択したいと考えています。問題は、これを両方のテーブル内で sort_order で並べ替えたいことです。例:

page 1 - (sort order of 0)
page 2 - (sort order of 1)
category 1 - (sort order of 2)
page 4 - (sort order of 3)
category 7 - (sort order of 4)

クエリを終了する方法が本当にわかりません。ここにあります:

select c.*, p.* 
from `categories` as c
join `pages` as p

どんな助けでも大歓迎です...

4

1 に答える 1

1

Union クエリを試すことができます。

SELECT * FROM categories
WHERE show_in_menu = 'Yes'
UNION
SELECT * FROM pages
WHERE show_in_menu = 'Yes'
ORDER BY sort_order

http://w3schools.com/sql/sql_union.asp

于 2012-04-25T00:59:40.197 に答える