1

この2つのテーブルからすべてのデータを取得するにはどうすればよいですか?

   Events
    cid   date
    1    1/12/2013
    2    2/2/2013
    1    5/5/2014

   Clients
    cid  name     gender
    1    david    male
    2    ashley   female
    3    barak    male

そして、次のようなCIDデータを含むすべてのイベントを取得するようにリクエストしたいと思います。

Final
   cid   date         name    gender
   1     1/12/2013    david   male
   2     2/2/2013     ashley  female
   1     5/5/2013     david   male
4

5 に答える 5

2

要件がSELECT*(why)であると仮定すると、以前のすべての回答をサブクエリでラップできます。このようなもの:

select * from 
(
  SELECT
  E.cid, 
  date, 
  name, 
  gender
FROM Events E
LEFT JOIN Clients C
  ON E.cid = C.cid) t

そしてSQLフィドル

幸運を。

于 2013-01-20T22:14:19.983 に答える
0
select * from Events join Clients on Clients.cid = Events.cid;
于 2013-01-20T21:29:35.957 に答える
0
SELECT
  E.cid, 
  date, 
  name, 
  gender
FROM Events E
LEFT JOIN Clients C
  ON E.cid = C.cid

左結合は、イベントCIDのクライアントテーブルにエントリがない場所を処理します

テーブル間に参照整合性があり、クライアントテーブルに少なくとも1つのエントリがあることを保証できる場合は、LEFTJOINをINNERJOINに置き換えることができます。しかし、それはすべて、あなたが持っているデータとあなたのクエリ制約が何であるかに依存します。

関連するデータを除外していないことが確実でない限り、INNERJOINを想定しないでください。

于 2013-01-20T21:30:36.983 に答える
0

あなたはJOINテーブルにしたいと思うでしょう:

select e.cid,
  e.date,
  c.name,
  c.gender
from clients c
inner join events e
  on e.cid = c.cid

SQL FiddlewithDemoを参照してください

結合構文の学習についてサポートが必要な場合は、ここに結合の優れた視覚的な説明があります

を使用しINNER JOINてテーブルを結合しました。これにより、テーブルclients内の行が一致するテーブル内のすべての行が返されeventsます。テーブルclientsの行に関係なくすべてを返したい場合は、eventsLEFT JOIN

于 2013-01-20T21:31:04.737 に答える
0

表は最初の文字で大文字になっています

SELECT e.cid, e.date, c.name, c.gender
FROM Events AS e
LEFT JOIN Clients AS c
ON e.cid = c.cid
于 2013-01-20T21:32:48.400 に答える