1

どちらの検索でも正しい結果が返されますが、2 つのクエリを組み合わせようとすると、結果が悪くなります。

$query3 = "SELECT *
FROM airport_countries, airports
WHERE airports.iso_country=airport_countries.code &&
airport_countries.name like '%$search%'
ORDER BY pageviews DESC";

$query2 = "SELECT * 
    FROM airports 
    WHERE name like '%$search%' or 
municipality like '%$search%'
ORDER BY pageviews DESC";

VVVVVVVVV

SELECT *
FROM airport_countries, airports
WHERE airports.iso_country=airport_countries.code &&
airport_countries.name like '%$search%' or
    airports.name like '%$search%'  or 
airports. municipality like '%$search%'
ORDER BY pageviews DESC

私は何を間違っていますか?

4

1 に答える 1

4

あなたの問題は演算子の優先順位のようです。それを避けるには、中括弧を使用してください。

SELECT *
FROM airport_countries, airports
WHERE airports.iso_country=airport_countries.code
AND (
    airport_countries.name LIKE '%$search%'
    OR airports.name LIKE '%$search%'
    OR airports. municipality LIKE '%$search%'
    )
ORDER BY pageviews DESC

ANDの代わりに使用することもお勧めします(代わりに&&書いている-はあまり一貫していないように見えます)が、それは読みやすさを向上させるための私の意見にすぎず、違いはありません。or||

于 2012-03-30T09:03:25.917 に答える