如何从2个不同的表中获取数据?
我有2个表User_Posts如何从2个不同的表中获取数据?
CREATE TABLE IF NOT EXISTS `User_Posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(12) NOT NULL,
`wall_id` int(12) NOT NULL,
`text` text COLLATE utf8_bin NOT NULL,
`img` varchar(255) COLLATE utf8_bin NOT NULL,
`time` date NOT NULL
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=7 ;
User_Activity
CREATE TABLE IF NOT EXISTS `User_Activity` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`content` varchar(55) COLLATE utf8_bin NOT NULL,
`activity_id` int(12) NOT NULL,
`activity` varchar(88) COLLATE utf8_bin NOT NULL,
`user_id` int(12) NOT NULL,
`time` date NOT NULL,
`value` varchar(12) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=131 ;
,我想获得的所有活动和岗位,其中USER_ID =?
试图与
$act = $this->app->db->rawQuery("SELECT p.*, a.*
FROM User_Posts p
JOIN User_Activity a
ON a.user_id = ? OR p.user_id = ?", array($id,$id));
做我得到的数据是这样
Array
(
[0] => Array
(
[id] => 130
[user_id] => 16
[wall_id] => 0
[text] => 'Text'
[img] => 0
[time] => 2014-10-31
[deleted] => 0
[content] => movie
[activity_id] => 5
[activity] => favorite
[value] => 0
)
[1] => Array
(
[id] => 130
[user_id] => 16
[wall_id] => 0
[text] => 'Text'
[img] => /posts/ceee9b387dcf72bcb19d1c1c73147ef3.jpg
[time] => 2014-10-31
[deleted] => 0
[content] => movie
[activity_id] => 5
[activity] => favorite
[value] => 0
)
)
但我需要
Array
(
[0] => Array
(
[id] => 1
[user_id] => 16
[wall_id] => 0
[text] => 'Text'
[img] => 0
[time] => 2014-10-31
)
[1] => Array
(
[id] => 2
[user_id] => 16
[wall_id] => 0
[text] => 'Text'
[img] => /posts/ceee9b387dcf72bcb19d1c1c73147ef3.jpg
[time] => 2014-10-31
)
[2] => Array
(
[id] => 130
[content] => movie
[activity_id] => 5
[activity] => favorite
[value] => 0
)
)
响应与附加活动的职位,但我需要不同每个人的结果
该怎么办?
只是一个小改
$act = $this->app->db->rawQuery("SELECT p.*, a.*
FROM User_Posts p, User_Activity a
WHERE a.user_id = p.user_id
AND p.user_id = ?", array($id));
我从User_Posts获得了与User_Activity中的附加行相同的结果行 – 2014-10-31 14:19:04
你不需要JOIN
关键字。
SELECT *
FROM User_Posts, User_Activity
WHERE `User_Activity`.`User_id` = `User_Posts`.`user_id`
这是一个连接,只有另一种语法。 – nvanesch 2014-10-31 14:24:52
得到相同的,改变了问题,并再次查看我得到 – 2014-10-31 14:26:10
@ nvanesch,是它加入两个表,但它不使用'JOIN'。纠正我的语法不利于回答这个问题。如果您觉得您可以更清楚地回答问题,请对其进行编辑。 – 2014-10-31 14:30:16
你试图做的事情是不可能的。查询返回的所有行必须具有相同的列。 – nvanesch 2014-10-31 14:26:10