2012-04-20 87 views
1

我有5个表,我希望从所有链接到一个名为pubs表的数据。mySQL没有得到所有记录

special_offers有3条涉及到酒馆 事件有4条涉及到酒馆

但是我只取回第一个事件和special_offers。它似乎没有构成一个多层次的数组。我已经尝试过加入和内心的联系,我不知道可能会出现什么问题。

SELECT pubs.*, special_offers.*, `events`.*, vote.* 
    FROM pubs 
    Inner Join `events` 
     ON pubs.id = `events`.pubID 
    Inner Join special_offers 
     ON pubs.id = special_offers.pubID 
    Inner Join vote 
     ON pubs.id = vote.pubID 
    WHERE pubs.id = 48 

下面是print_r的输出

Array (
[0] => 48 
[id] => 1 Harveys 
[name] => Harveys 
[sun] => 10am-2.30am 
[31] => 1 
[32] => 4 
[special_dayID] => 4 
[33] => 48 
[pubID] => 48 
[34] => 2.50 Drinks 
[title] => Kodakid 
[35] => All drink 2.50 get them while there hot! or cold! 
[desc] => Kodakid are playing! 
[36] => 1 
[37] => 48 
[38] => 2012-04-30 
[date] => 2012-04-30 
[39] => Kodakid 
[40] => & others 
[subtitle] => & others 
[41] => Kodakid are playing! 
[42] => kodakid.jpg 
[img] => kodakid.jpg 
[43] => 1 
[44] => 48 
[45] => 3 
[price_range] => 3 
[46] => 5 
[atmosphere] => 5 
[47] => 2 
[food] => 2 
[48] => 4 
[service] => 4 
[49] => 3 
[value] => 3 
[50] => Waterford City 
[county] => Waterford City) 

感谢

+1

可不可以打印print_r输出? – worenga 2012-04-20 16:04:16

+0

您可以使用blockquote标签重新格式化输出吗?阅读很痛苦。 – 2012-04-20 16:04:25

+0

谢谢,未来会确认 – 2012-04-20 16:20:39

回答

1

你是如何做的实际查询? MySQL不支持嵌套数组或行。结果集由零个或多个行组成,每行都是一个或多个数字,字符串,日期等。

你在做什么就是要求一个包含所有四个表中所有列的结果集。因为你使用INNER连接,所以你要求MySQL只返回所有四个表中存在的行。因此,在events中没有关联行的pubs中的ID将不会包含在结果集中,即使它在另外两个中包含行也是如此。

要做你在问什么,你可以使用单独的查询(一个用于事件,一个用于投票等)。您还可以尝试使用LEFT JOIN而不是INNER JOIN或子查询和聚合器(如GROUP_CONCAT),但这取决于您计划如何处理这些信息。

+0

感谢您的回复。我之前使用过cakephp,我习惯于多级数组。认为它会与简单的查询类似。不确定。我将使用单独的查询。 – 2012-04-20 16:20:12