2014-02-13 50 views
0

提取数据我有2个表从2个表

table1 

eventcode  mobile   points name 
------------- 
CAMTRIP   82074626   10  SS 
TARANAKI  91262063   30  JL 
CAMTRIP   91262063   10  JL 

和表2

passcode serial remark 
---------- 
TARANAKI  1 NZ 
CAMTRIP   2 Cameroon 

我想输出作为

Cameroon 
NAME Points 
---------- 
SS 10 
JL 10 

NZ 
---------- 
JL 30 

我想

SELECT (b.name)  name, 
     (b.points) point, 
     (b.eventcode) ecode, 
     (c.remark) rem 
FROM table1 b, 
     table2 c 
WHERE c.passcode = b.eventcode 
GROUP BY b.eventcode 

我没有得到想要的结果。哪里不对?

+0

你编辑问题包括所需的结果吗? –

回答

3

所以我想你需要的实际结果是:

Remark Name Points 
---------------------- 
Cameroon SS 10 
Cameroon JL 10 
NZ  JL 30 

使喀麦隆和新西兰组标题应该在客户端完成。该查询将是:

SELECT t2.Remark, t1.Name, t1.Points 
FROM table2 t2 
INNER JOIN table1 t1 ON t2.passcode = t1.eventcode 

只是JOIN上的共享字段,然后SELECT你从每个表所需的任何领域。

+0

为什么要使用table2和table1上的内部连接,而不是使用table1和左连接到table2。我怀疑OP会希望在'Remark'设置不好的情况下得到结果。否则,我们完全在关于演示文稿不是数据库作业的同一页面上。 – Anthony

+0

但是备注是他的组头,所以我觉得所有的结果都应该放在头上。无论哪种方式,只有OP可以知道他想要什么。对于提供的数据,两个连接都会产生相同的结果,因此除猜测之外无法知道。 – OGHaza

+0

谢谢,这对我有用。如果我想要将表格的表示方式作为下面列出的行和点进行转换。我应该怎么做?该评论是动态添加的。 – user3305121

0

尝试:

$query = "Select b.name as name, b.points as points, b.eventcode as ecode, c.remark as rem from table1 b join table2 c ON (c.passcode=b.eventcode) group by b.eventcode"; 
+2

即将返回相同的结果 – OGHaza

0
SELECT b.name as name, 
     b.points as point, 
     b.eventcode as ecode, 
     GROUP_CONCAT(DISTINCT c.remark.has SEPARATOR ", ") as rem 
FROM table1 b 
left outer join table2 c on c.passcode = b.eventcode 
GROUP BY c.passcode 
+0

即使这给出了相同的结果。 –

0

试试这个

select table2.remark,table1.name,table1.points from table1,table2 where 
table1.eventcode=table2.passcode 
0

有一个数据库的响应没有现实理由需要通过的话,打破了行,因为这只会是一个人类用户的查看结果的利益,这不是响应的目的。将结果分解为更易于查看的内容应由UI层处理。考虑到这一点,下面将让你心目中的结果让一些其他的方法可以轻松地准备数据报告:

SELECT remark, name, points 
FROM table1 
LEFT JOIN table2 ON eventcode = passcode 

这将返回:

remark  name points 
------------------------ 
Cameroon SS 10 
Cameroon JL 10 
     NZ JL 30