2010-11-29 10 views
1

使用して完全一致のためのMySQLデータベースで複数のテーブルを検索するためにここにここで私はデータベース SELECT * FROM user WHERE category='paid'から、それが動作するよりコードとデータへのアクセス方法ですテーブル構造がどのようにPHP

table : user 
id 
name 
email 
category 

table 2 : body 
id 
uid 
height 
haircolor 

です。

は、私は何をしたい(i..eは、複雑な検索を許可する)

Select * FROM user WHERE category='paid' body.height='5ft', body.haircolor='red' WHERE user.id=body.uid 

私は文が間違っている知っているが、私は、データベースが、私のようにヘアカラーを選択できるように検索可能にする、このようなものです赤、高さ5フィート、高さ5フィート、ヘアカラーが赤(正確に一致)のユーザーのみを返すようにしてください。

私はあなたに私の質問を理解していただきたいと思います。

P.S:ご覧のとおり、2つのテーブルを使用しています.1つはユーザー情報を格納し、2つはユーザーのボディ情報を格納しています。私はそれらを1に統合することができますが、私はそれをそのまま保ちたいと思います。

答えて

1

あなたは実際にあなたが上でやっていることに非常によく似た何かをすることができます - FROM構成で複数のテーブルを使うだけです。あなたが何かを素早く引き出したいとき、それは素晴らしい方法です。

SELECT user.* FROM user, body 
    WHERE user.category = 'paid' 
    AND body.height = '5ft' 
    AND body.haircolor = 'red' 
    AND user.id = body.uid 

このインスタンスでSELECTを指定することを忘れないでください - ユーザーテーブルからすべてを。あなたはJOINでもこれを行うことができますが、私はそれらの恐怖症があるので、以前の方法を使う傾向があります。

SELECT * FROM user 
    WHERE user.category = 'paid' 
    AND body.height = '5ft' 
    AND body.haircolor = 'red' 
    JOIN body ON user.id = body.uid 

これはすべきことです!私が言ったように、私はジョーンズを使用して軽蔑し、前者は絶対にうまくいくはずです。

+0

これらの2つのクエリの違いは何ですか? –

+0

これは完全に機能しました。ありがとうございます。 :) –

+0

彼らは終わりに単に異なる手段です。私は前者の構文を好む。彼らはまったく同じことをしています!そして、あなたは大歓迎です! –

2

あなたは条件選択のの両方にWHEREを使用して、だけでなく、あなたの2つのテーブル間の接続の指定に基づいて、混乱のビットを持っているように見えます。だから今、あなたがJOIN/ONセクションに2つのテーブルを出し結ぶ一部分離しました

SELECT user.* 
FROM user 
JOIN body ON body.uid = user.id 
WHERE body.height = '5ft' 
    AND body.haircolor = 'red'; 

、およびWHERE:私はあなたにこのようなクエリを与えることになる、明示的に定義されたジョイン維持することを好む理由はここにあります検索を絞り込む条件のみが含まれています。