74

私はSQLの初心者なので、これは本当に簡単な答えだと確信しています。

表1には、列1(基準1)列2(基準2)列3(メトリック1)があります。

表2には、列1(基準1)列2(基準2)列3(table2.criteria2に固有のメトリック2)があります。

テーブルの各基準1に対して、基準2の値は1〜5の範囲で指定できます。

ここでjoinステートメントを使用する場合(これより前にテーブル1をOneとして識別したと仮定):

Select WeddingTable, TableSeat, TableSeatID, Name, Two.Meal
FROM table1 as One
inner join table2 as Two
on One.WeddingTable = Two.WeddingTable and One.TableSeat = Two.TableSeat

3つまたは4つあるという事実を知っていても、基準1 /基準2の組み合わせの1つしか取得できません。すべての組み合わせを取得するにはどうすればよいですか?

テーブル1が基本的に座席表であり、テーブル2が各テーブル/座席が選択した食事オプションである結婚式がある状況を考えてみましょう。表1には便利なTableSeatIDがありますが、表2には同等のIDがありません。

サンプルデータ:

ここに画像の説明を入力してください

結果には、WeddingTable 001の3シートすべてと、WeddingTable002の1シートの4行すべてが表示される必要があります。

望ましい結果:

ここに画像の説明を入力してください

4

4 に答える 4

108
select one.*, two.meal
from table1 as one
left join table2 as two
on (one.weddingtable = two.weddingtable and one.tableseat = two.tableseat)
于 2014-05-28T02:35:27.653 に答える
5
SELECT  aa.*,
        bb.meal
FROM    table1 aa
        INNER JOIN table2 bb
            ON aa.tableseat = bb.tableseat AND
                aa.weddingtable = bb.weddingtable
        INNER JOIN
        (
            SELECT  a.tableSeat
            FROM    table1 a
                    INNER JOIN table2 b
                        ON a.tableseat = b.tableseat AND
                            a.weddingtable = b.weddingtable
            WHERE b.meal IN ('chicken', 'steak')
            GROUP by a.tableSeat
            HAVING COUNT(DISTINCT b.Meal) = 2
        ) c ON aa.tableseat = c.tableSeat
于 2012-10-30T00:49:01.340 に答える
2
create table a1
(weddingTable INT(3),
 tableSeat INT(3),
 tableSeatID INT(6),
 Name varchar(10));

insert into a1
 (weddingTable, tableSeat, tableSeatID, Name)
 values (001,001,001001,'Bob'),
 (001,002,001002,'Joe'),
 (001,003,001003,'Dan'),
 (002,001,002001,'Mark');

create table a2
 (weddingTable int(3),
 tableSeat int(3),
 Meal varchar(10));

insert into a2
(weddingTable, tableSeat, Meal)
values 
(001,001,'Chicken'),
(001,002,'Steak'),
(001,003,'Salmon'),
(002,001,'Steak');

select x.*, y.Meal

from a1 as x
JOIN a2 as y ON (x.weddingTable = y.weddingTable) AND (x.tableSeat = y. tableSeat);
于 2014-04-04T23:35:00.043 に答える
0

すべての指標を一覧表示したいようですか?

SELECT Criteria1, Criteria2, Metric1 As Metric
FROM Table1
UNION ALL
SELECT Criteria1, Criteria2, Metric2 As Metric
FROM Table2
ORDER BY 1, 2

Criteria1 + Criteria2の組み合わせが1つだけ必要な場合は、それらをグループ化します。

SELECT Criteria1, Criteia2, SUM(Metric) AS Metric
FROM (
    SELECT Criteria1, Criteria2, Metric1 As Metric
    FROM Table1
    UNION ALL
    SELECT Criteria1, Criteria2, Metric2 As Metric
    FROM Table2
)
ORDER BY Criteria1, Criteria2
于 2012-10-30T00:30:03.290 に答える