2014-02-13 53 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