2011-04-12 101 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