次のSQLステートメントをPHPで動的に生成していますが、返されるレコードに問題があります。中央にある "IN"ステートメントは、コンマで区切られた値の大きなリストを持ち、特定のislandIDに対して6レコードを返します。しかし、文全体を実行したときに生成される最終的な結果は、前述の同じislandIDの22レコードになります。私は必要に応じてより多くの情報を提供することができます。SQL "In"ステートメント6レコードを返す...全体のSQLステートメントは22レコードを返します
SELECT islandID AS parentIslandID, islandName, island.longDesc,
imageLocation, COUNT(resortID) AS totalResorts, resort.resortID
FROM island, images, resort
WHERE parentIslandID = island.islandID
&& parentObjectID = island.islandID
&& imageType = 1
&& island.islandID IN (
SELECT parentIslandID FROM resort WHERE resortID IN (
59,62,65,69,71,72,74,75,76,82,86,89,91,93,95,105,
106,116,117,118,120,121,122,123,124,125,126,127,
131,145,146,150,157,159,160,167,170,174,176,185,188,189,193,
194,198,199,200,203,205,213,217
)
)
&& (search_Inclusive = '-1' || search_Inclusive = '0')
&& (search_onBeach = '-1' || search_onBeach = '0')
&& (search_wedCoord = '-1' || search_wedCoord = '0')
&& (search_roomRate >= '0' && search_roomRate <= '1000')
&& (search_HotelSuite = '-1' || search_VillaCondo = '-1')
&& (passportReq = '-1' || passportReq = '0')
&& (wideAccept = '-1' || wideAccept = '0')
&& (daysSearchable <= '3')
&& (search_airportDist <= '6')
&& resort.active = '-1'
GROUP BY resort.parentIslandID
ORDER BY totalResorts DESC
新しい考え:別のテーブルで「IN」演算を使用しても、同じことをやっています。唯一の違いは、テーブルには "IN"ステートメントで使用したislandIDが含まれているということです。ですから、私はDBMSのビューを作成して2つのテーブルをマージしてislandIDを取得し、このようにして作業することを計画しています。これについての考えは?
「AND」演算子は「&&」ではなく「AND」であってはなりませんか?これは何DBMSですか? – Phil
@Phil DBMSは、mySQLバージョン5.0.91を実行しているphpMYAdminです。あなたが提案し、すべての "&&"演算子を "AND"に変更しました。結果はまったく同じでした。他の思考? – MingMing
MySQLはいずれの演算子も許可すると思います – Phil