2015-04-27 70 views
0

我有兩張桌子。如何從表中選擇一行和多行B表?

+-----------+----------+------------+ 
| ID  | title | URL  | 
+-----------+----------+------------+ 
| 1   | test  | test.html | 
| 2   | test2 | test2.html | 
+-----------+----------+------------+ 

文件

+-----------+----------+------------+ 
| ID  | page_id | name | 
+-----------+----------+------------+ 
| 10  | 1  | a.jpg | 
| 11  | 1  | b.jpg | 
| 12  | 2  | c.jpg | 
+-----------+----------+------------+ 

如何從某一頁面行和FILES多行選擇?

我的查詢爲:

test 
a.jpg 

輸出我需要:

test 
a.jpg 
b.jpg 
+0

(a)您有關於文件的FK約束,引用頁面嗎? (b)該代碼應該工作,不管你使用的是什麼「sql」變體,它都會被破壞(c)'SELECT *''會產生六列,而不是一列。請提供。 – PerformanceDBA

回答

0

像這樣的事情

select * from pages,files WHERE (pages.id = page_id) AND (url='$url') 

上面查詢的輸出

SELECT 
    Files.Name 
FROM Files 
INNER JOIN Pages ON Files.page_id = Pages.Id 
WHERE Pages.url = '$url' 

UNION ALL 

SELECT 
    Pages.title 
FROM Pages 
WHERE Pages.url = '$url' 
1

這是一個sql問題,比專門用PHP做的任何事情都要多。
我認爲這是你想要的,但我不確定你的措辭。

SELECT pages.title, files.name 
FROM pages 
INNER JOIN files ON pages.id = files.page_id 
WHERE (pages.url='$url') 
GROUP BY files.name; 
+0

不幸的是,仍然沒有工作... –

+0

你得到了什麼輸出,你可以嘗試GROUP BY files.name。 (編輯答案) –