0

selectステートメントについて助けが必要です。

table: mobiles (brand,model,price)

コンテンツを取得するために以下の構文を試しました。

select * 
from mobiles 
where brand in ('apple','nokia','samsung') 
      and model in ('lumia 510','galaxy s3')

上記のクエリは、「nokia lumia 510」と「samsung galaxy s3」のみを表示しています。

「apple」のすべてのモデルを表示し、「nokia」の「lumia 510」と「samsung」の「galaxy s3」のみを表示したい。

構文の使い方が間違っていますか?

ユーザーがブランドとモデルでモバイルをフィルタリングできるサイトを開発しています。ユーザーが選択したモバイルのみを表示する必要があります。各ブランドについて、ユーザーが特定のモデルを選択すると、そのモデルのみが表示され、ブランドのみを選択すると、そのブランドのすべてのモバイルが表示されます。

彼は任意の数のブランドを選択でき、各ブランドの下で特定のモデルを選択する場合と選択しない場合があります。

4

1 に答える 1

1

ブランドごとにモデル要件が異なるため、IN ではこれを行うことはできません。

SELECT *
FROM mobiles
WHERE (brand = 'apple')
OR (brand = 'nokia' AND model = 'nokia lumia 510')
OR (brand = 'samsung' AND model = 'galaxy s3')

モデルが常に特定のブランドに固有のものである場合は、少し単純化できます。

SELECT *
FROM mobiles
WHERE brand IN ('apple')
OR model IN ('nokia lumia 510', 'galaxy s3')

モデルが選択されていないすべてのブランドを最初のIN句に入れ、すべてのモデルを 2 番目の句に入れます。ユニークな関係性から、ブランドはモデルによって暗示されます。

于 2013-02-22T23:32:44.653 に答える