質問: テーブルの結合について教えてください。 テーブルの結合についてわからなくなってしまったので、教えてください。 次のようなテーブルがあります。 counterテーブル ・page_no ・cnt pageテーブル ・no ・member_no linkテーブル ・page_no ・member_no memberテーブル ・no ・name ・flag 各ページにカウンタがついている。 各ページは作成したメンバが記録されている 各ページにはリンクがはられてあり、そのリンクを作成したメンバが記録されている。 各メンバには、退会を示すflagがあり、flag=0が会員、flag=1が退会を示す。 以上のような条件で、 退会していないメンバが関係するページのnoとカウンタの値を取得したい (関係とは、メンバが作ったorリンクを貼った という意味です) のですが、どのように記述すればよいのでしょうか? 自力で考えようとしたのですが、力尽きました。 すみませんが、ご教授お願いいたします。
回答: mysqlの質問をする場合は、お使いのバージョンを書きましょう。 せっかく具体的なsqlを提示してもらっても、あなたの環境では動かないということがあり得ます。 各表間の列データの関連を、具体的に書いてください。 >各ページにカウンタがついている 更新カウンタという意味ですか? page表とcounter表は、別表にする理由は何ですか? page表の行と、counter表の行は、1対1で対応するのでは? >各ページにはリンクがはられてあり、そのリンクを作成したメンバが記録されている page表にはあるが、link表には対応行がない場合も、1行以上ある場合もあるのですね? データの関連を推測して、検索sql例を作ってみました。 【sql例】 select no as mno,name,p.pno from member as m left join (select page_no as pno,member_no as mno from page union select page_no as pno,member_no as mno from link) as p on m.no=p.mno left join counter as c on p.pno=c.page_no where m.flag=0 ;