0

私の問題は、現在作業しているWebサイトに製品のテーブルが2つあり、テーブルの1つだけを検索する検索機能があることです。ウェブサイトの検索ページを拡張して、両方のテーブルをカバーしたいと思います。

事実上、PHPを使用してユーザーの検索クエリとの関連性を計算できるように、結果セットを結合する2つのクエリが必要です。

mysql_query("SELECT * FROM product WHERE title LIKE '%$keyword%' OR content LIKE '%$keyword%'")

titleproduct_sprayは、テーブル上にあるフィールドですcontentproduct上記のクエリを変更して、テーブルとテーブルの結果を含めるにはどうすればよいproduct_sprayですか?

2つのテーブル間にリンクがないため、必要なJOINかどうかはわかりません。これらは、相互に排他的です。ただし、MySQLの経験はあまりないので、足りないものがあれば教えてください。

私はこれを試しました:

mysql_query("SELECT * FROM product, product_spray WHERE product.title LIKE '%$keyword%' OR product.content LIKE '%$keyword%' OR product_spray.title LIKE '%$keyword%' OR product_spray.content LIKE '%$keyword%'")

結果セットが正しく出てこない、結果を組み合わせているようです。

基本的に、必要なのは1つのクエリですが、2つの排他的なSELECTステートメントを使用します。これはできますか?

2つのクエリの結果セットを組み合わせることができるPHPで何かをすることさえできます。

4

2 に答える 2

2

行を結合したいと思います(列ではありませんか?)。そしてあなたの問題を解決するために、あなたはこれに使用UNIONします

SELECT  columnA
FROM    product
WHERE   title LIKE '%$keyword%' OR 
        content LIKE '%$keyword%'
UNION
SELECT  columnA
FROM    product_spray
WHERE   title LIKE '%$keyword%' OR 
        content LIKE '%$keyword%'

両方のクエリの結果セットに同じ列があることを確認してください。

于 2012-08-08T08:14:40.737 に答える
0
mysq_query("SELECT A.*,B.* FROM 
product as A
left join product_spray as B ON B.title LIKE '%$keyword%' = A.title LIKE '%$keyword%' 
WHERE B.content LIKE '%$keyword%' OR B.content LIKE '%$keyword%'")
AND don't A.*  this sol - select A.title , A.content from xxx 
于 2012-08-08T08:19:47.473 に答える