2011-04-12 100 views
0

我要選擇多個表的各個領域,並獲取導致獨立但MySQL的返回所有行在一起:mysql使用INNER JOIN選擇多個表?

SELECT prod_product.* 
    ,pub_comment.* 
FROM prod_product 
INNER JOIN pub_comment ON (prod_product.id = pub_comment.itemId) 
WHERE prod_product.id=7744 

有,我可以分別提取每個表中的行什麼辦法?

我嘗試@prod:=prod_product.*,@comment:=pub_comment.*但mysql不允許我存儲超過1行。

+0

@ user703617:記住接受正確的答案,如果你找到一個。 – Marco 2011-04-12 09:10:54

回答

0
SELECT @prod:= CONCAT_WS(',',prod_product.field1,prod_product.field2,...) 
    ,@comment:= CONCAT_WS(' ',pub_comment.field1,pub_comment.field2,....) 
FROM prod_product 
INNER JOIN pub_comment ON (prod_product.id = pub_comment.itemId) 
WHERE prod_product.id = 7744 

注意CONCAT_WS將分離的田地,CONCAT只會粉碎,然後一起。

+0

Tnx約翰,我愛它;) – Hamid 2011-04-13 05:54:52

+0

哦,我必須警告你concat_ws,它給了我一個討厭的整理錯誤,其中表是在LATIN1並且系統設置爲UTF8,那麼結果將以UTF8格式顯示,而UTF8不會將其插入到LATIN1表格中。如果您得到此解決方法是使用CONCAT(field1,'',field2,''...)。 – Johan 2011-04-14 08:08:01

1

執行兩個查詢:

select * from prod_product WHERE prod_product.id=7744 

select * from pub_comment WHERE pub_comment.itemId=7744 

一個查詢包含兩個表中的字段總是返回單行。
無論如何:將單列中的列組合在一起的問題是什麼?如果你的名字有問題,你可以使用別名。

+0

嗨馬可,感謝您的回答,但它的2個查詢,我需要減少我的數據庫提取,也許我必須這樣做 – Hamid 2011-04-12 10:35:54

+0

@ user703617:正如我告訴你,爲什麼你不能使用單個查詢?將列連在一起的問題是什麼? – Marco 2011-04-12 10:38:33

+0

@ user703617:如果你給我們一些細節,我們可以幫助你更好:) – Marco 2011-04-12 11:09:50