0

私と同様の問題に関する多くの投稿があることは知っていますが、以下のように、私のケースに適用できる解決策を見つけることができないようです。

列の数が一致するようにnull列を追加しました。最初の選択ですべての列を指定する必要があることがわかりました。そこに問題があります。2番目の選択のCOUNTに対応する最初の選択にCOUNT列を含める方法がわかりません。

助けてくれてありがとう。

最初の選択:

SELECT brands.brand_id, 
       brands.brand, 
       models.model_id, 
       models.model, 
       segments.segment_id, 
       segments.segment, 
       versions.version_id, 
       versions.version, 
       versions.places, 
       versions.gearbox, 
       versions.doors, 
       prices.price 
FROM   versions 
       INNER JOIN models USING (model_id) 
       INNER JOIN segments USING (segment_id) 
       INNER JOIN brands USING (brand_id) 
       INNER JOIN prices USING(version_id) 
WHERE  price BETWEEN 200001 AND 225000 
       AND brands.active = 'Y' 
       AND models.active = 'Y' 
       AND versions.active = 'Y' 

2 番目の選択:

SELECT Count(*) AS SafetyItems, 
       version_id, 
       NULL     AS COL3, 
       NULL     AS ....,
       NULL     AS COL12 
FROM   versiontrim 
       INNER JOIN trims USING(trim_id) 
       INNER JOIN versions USING(version_id) 
       INNER JOIN prices USING(version_id) 
       INNER JOIN models USING (model_id) 
       INNER JOIN brands USING (brand_id) 
WHERE  trimtype IN( 'sec', 'help' ) 
       AND price BETWEEN 200001 AND 225000 
       AND brands.active = 'Y' 
       AND models.active = 'Y' 
       AND versions.active = 'Y' 
GROUP  BY version_id 

最初の選択のサンプル結果:

 brand_id   brand   model_id model  segment_id  version_id      price   
   58   Renault    11      Megane       4           44         209900
   58   Renault    14      Scenic       5           54         209900
   58   Renault    11      Megane       4           69         200900
   71   Toyota     29      Yaris        2          214         200900
   71   Toyota     30      Auri         4          216         207900
   52   Nissan     58      Pick-up     14          282         209000
   24   Ford       21      Focus        4          290         209000

上記に追加したい2番目の選択のサンプル結果(価格列の後):

SafetyItems     version_id  
   9               44
   7               54
   9               69
  10              214
   6              216
   1              282
  10              290
4

2 に答える 2

0

2 番目のステートメントの列に対応するNULL最初のステートメントにも列を入れたいと思います。SELECTCOUNTSELECT

2 番目のステートメントと同じようにNULL、最初のステートメントに列を配置するだけで問題ありません。また、最初の の列名を使用するため、列の を忘れないでください。SELECTSELECTALIASUNIONSELECT

SELECT 
NULL AS SafetyItems,
brands.brand_id,
brands.brand,
models.model_id,
models.model,
segments.segment_id,
segments.segment,
versions.version_id,
versions.version,
versions.places,
versions.gearbox,
versions.doors,
prices.price
FROM versions
INNER JOIN models
USING (model_id)
INNER JOIN segments
USING (segment_id)
INNER JOIN brands
USING (brand_id)
INNER JOIN prices
USING(version_id)
WHERE price BETWEEN 200001 AND 225000
AND brands.active='Y'
AND models.active='Y'
AND versions.active='Y'

ただし、最初の列数と一致するようNULLに、2 番目に別の列を追加する必要があります。これがあなたを助けることを願っています。SELECTSELECT

于 2013-05-29T10:52:58.080 に答える