1

How can i get all data from this 2 tables:

   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

And i want to make request to get all events with the cid data like:

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 *(为什么),那么您可以将所有先前的答案包装在一个子查询中。像这样的东西:

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

Left Join 负责处理在客户端表中没有事件 cid 条目的位置

如果表之间存在参照完整性,并且您可以保证 Clients 表中至少有一个条目,那么您可以将 LEFT JOIN 替换为 INNER JOIN。但这一切都取决于您拥有什么数据以及您的查询约束是什么。

除非您确定不排除相关数据,否则切勿假设 INNER JOIN。

于 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 Fiddle

如果您在学习连接语法方面需要帮助,这里有一个关于连接的可视化解释

我使用 anINNER JOIN来连接表,这将返回clients表中具有匹配行的表中的所有行events。如果您想返回所有clients而不考虑表中的行,events那么您可以使用LEFT 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 回答