2017-11-27 11 views
-7

私はphp/mysqlを使用して家具のウェブサイトに検索しています。検索*で複数のテーブルから検索QUERY

$sql = "SELECT * FROM produitsoutdoor_new WHERE CONCAT(nom, dimensions, coloris, descriptif, composition, matiere, stock) LIKE '%$keyword%'"; 

をしかし、私はそのようないくつかの他のテーブルを追加しようとすると::

私はこのような単純な検索クエリを使用しました

$sql = "SELECT * FROM produitsoutdoor_new, produitssalon, produitsdecoration WHERE CONCAT(nom, dimensions, coloris, descriptif, composition, matiere, stock) LIKE '%$keyword%'"; 

結果は空です。この場合、JOINはどのように使うべきですか?

+1

の詳細を読むことができます

を作成することが容易になります= table1field – clearshot66

+1

'INNER JOIN'は、IDが3つのテーブルすべてに存在する場合にのみ値を表示します。結合テーブルに値が存在しない場合は、LEFT JOINを使用してください。 –

+0

正しい方法は、UNIONを使用することです。さらに、OPの実際のクエリ(彼が働かないと言ったもの)は、すべてのテーブル間でデカルト計画を実行しています。エイリアスの不足のためにおそらくほとんど機能していません。 –

答えて

0

第クエリによって返される「ゼロ行」のための2つの可能性の説明があります

1))を加えテーブル(produitssalon又はproduitsdecoration)のいずれかに行がない、または

2があります

:あなたが尋ねた質問に関してはコードが


をignorningされるSQL(あいまいな列参照、無効な表参照)でのエラー

Q:この場合、JOINはどのように使用すればよいですか?

カンマ演算子は、結合操作の古い学校構文です。カンマは、JOINというキーワードで置き換えることができます。

SELECT p.* 
    FROM produitsoutdoor_new p 
    , produitssalon s 
    , produitsdecoration d 
WHERE ... 

が、これはデカルト積... sからすべての行と一致 pからすべての行を生成するために起こっているいずれかの条件に「一致」の行がなければ

SELECT p.* 
    FROM produitsoutdoor_new p 
    JOIN produitssalon s 
    JOIN produitsdecoration d 
WHERE ... 

に相当しますdの各行に一致します。

典型的には、我々は結合テーブルに見出さ一致する行が存在しない場合、行が返されません。、内部結合とON

SELECT p.* 
    FROM produitsoutdoor_new p 
    JOIN produitssalon s 
    ON s.p_id = p.id 
    JOIN produitsdecoration d 
    ON d.p_id = p.id 
WHERE ... 

における整合条件を含みます一致がない場合でも行を返す場合は、外部結合を使用できます。

SELECT p.* 
    FROM produitsoutdoor_new p 
    LEFT 
    JOIN produitssalon s 
    ON s.p_id = p.id 
    LEFT 
    JOIN produitsdecoration d 
    ON d.p_id = p.id 
WHERE ... 

それは本当に、実際の仕様に依存し、この特定のケースのために適切なのかどうか:私たちは、キーワードLEFT含めることによって、外部結合を指定することができます。また、サンプルデータと期待される出力を持つことで、そのことを明確にするのに役立ちます。

ヒント:

は、テーブル名、またはテーブルの別名を持つ すべて列参照を修飾します。

0

すべてのテーブルのスキーマが正規化されている場合、私はウルテーブルを知っていればuはどこ条件も

でテーブルを結合することができますmysqlの

または

にクエリを結合を作成することは容易ですINNERがtable2field ONテーブルをJOINを使用uは https://www.w3schools.com/sql/sql_join.asp

関連する問題