3

2 つのテーブルのデータを結合するクエリを作成する必要があります。おそらく JOIN と UNION の組み合わせだと思います。

この例では、ステータスがアクティブであるすべての名前を、ワイン、ソーダ、ディナー、デザート、フルーツの好みを組み合わせて名前順に並べて、1 回だけリストする必要があります。

名前が常に両方のテーブルにあるとは限らないため、JOIN だけで機能するかどうかはわかりません。UNION は同じ列を持たないため注意が必要です。null 値を使用して UNION を機能させようとしましたが、名前ごとに 1 つの行にグループ化するのではなく、名前ごとに重複する行ができました。

DRINK
====================================
name         status   wine    soda
----------   ------   ------  ------
John Smith   active   red     cola
Mary Jones   active   white   lemonade
Tom Brown    old      red     fanta
Judy White   active   red     dr pepper
Sam Wing     old      red     cola

FOOD
=============================================
name         status   dinner  dessert  fruit
----------   ------   ------  ------   ------
John Smith   active   steak   muffin   apple
Mary Jones   active   fish    cake     kiwi
Walter Yu    active   pasta   cake     banana
Jim Adams    old      steak   candy    apple
Adam Sheers  active   pasta   candy    grapes

このような結果を生成するには、クエリが必要です-

RESULT
==================================================================  
name         status    wine     soda       dinner  dessert  fruit
----------   ------    ------   ------     ------  ------   ------
Adam Sheers  active    -        -          pasta   candy    grapes
John Smith   active    red      cola       steak   muffin   apple
Judy White   active    red      dr pepper  -       -        -
Mary Jones   active    white    lemonade   fish    cake     kiwi
Walter Yu    active    -        -          pasta   cake     banana

これについて何か助けてくれてありがとう!

4

3 に答える 3

2

これはうまくいくはずです:

SELECT names.name, drink.wine, drink.soda, food.dinner, food.dessert, food.fruit
FROM
    (SELECT name FROM food WHERE status = 'active'
    UNION
    SELECT name FROM drink WHERE status = 'active') names
LEFT JOIN drink ON drink.name = names.name
LEFT JOIN food ON food.name = names.name

結果

| | 名前 | ワイン | ソーダ | ディナー | デザート | フルーツ |
-------------------------------------------------- --------------
| | ジョン・スミス | 赤 | 赤 | コーラ | ステーキ | マフィン | リンゴ |
| | メアリー・ジョーンズ | ホワイト | レモネード | 魚 | ケーキ | キウイ |
| | ウォルター・ユー | (ヌル) | (ヌル) | パスタ | ケーキ | バナナ |
| | アダム・シアーズ | (ヌル) | (ヌル) | パスタ | キャンディー | ぶどう |
| | ジュディ・ホワイト | 赤 | 赤 | 博士ペッパー | (ヌル) | (ヌル) | (ヌル) |

実際に見る

于 2013-01-11T22:20:10.180 に答える
1
SELECT name, status, MAX(wine) wine, MAX(soda) soda, MAX(dinner) dinner, MAX(dessert) dessert, MAX(fruit) fruit
FROM
  (
    SELECT name, status, wine, soda, NULL dinner, NULL dessert, NULL  fruit
    FROM DRINK WHERE status = 'active'
    UNION ALL
    SELECT name, status, NULL wine, NULL soda, dinner, dessert, fruit
    FROM FOOD WHERE status = 'active'
  ) R
  GROUP BY name, status
于 2013-01-11T22:27:57.083 に答える
0
select * 
from food f 
left join drink d on f.name = d.name 
where d.status = 'active' and f.status = 'active'
于 2013-01-11T22:20:15.127 に答える