Php 需要sql多对多(?)pdo查询帮助
我试图在连接两个表后返回行,但很难得到想要的结果。我有两张桌子:Php 需要sql多对多(?)pdo查询帮助,php,sql,pdo,Php,Sql,Pdo,我试图在连接两个表后返回行,但很难得到想要的结果。我有两张桌子: CREATE TABLE `all_sessions` ( `session_id` int(11) NOT NULL AUTO_INCREMENT, `type` varchar(255) NOT NULL DEFAULT 'TBA', `breakoutsessions` varchar(255) NOT NULL DEFAULT '0', `location` varchar(255) NOT
CREATE TABLE `all_sessions` (
`session_id` int(11) NOT NULL AUTO_INCREMENT,
`type` varchar(255) NOT NULL DEFAULT 'TBA',
`breakoutsessions` varchar(255) NOT NULL DEFAULT '0',
`location` varchar(255) NOT NULL DEFAULT 'TBD',
`title` varchar(255) NOT NULL DEFAULT 'Title',
`details` varchar(255) NOT NULL DEFAULT 'TBA',
PRIMARY KEY (`session_id`),
UNIQUE KEY `session_id_UNIQUE` (`session_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
session_id type breakoutsessions location title details
---------- ---- ---------------- -------- ----- -----------------
1 lect 1,3,4 bld1 ph1 details text here
2 tour 2 bld15 ph2 details text here
3 soci 6 bld3 ph3 details text here
4 lect 1,2 bld2 ph3 details text here
5 lect 6 bld3 ph3 details text here
及
我试着简单地加入表格,但这似乎不起作用,结果是空的。这是在除session_id和breakout_id之外的所有字段中返回null的代码
function manytable(){
$dbcon = dbConnect::getInstance();
$stmt = $dbcon->db->prepare("
SELECT
*
FROM `all_sessions`
RIGHT JOIN `break_sess_pair`
ON 'break_sess_pair.session_id'='all_sessions.session_id'
");
$comp_sessions_list = array();
if($stmt->execute()){
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
}
我想做的是将两者结合起来,这样我最终会得到这样的结果:
session_id type location title details breakout_session
---------- ---- -------- ----- ----------------- ----------------
1 lect bld1 ph1 details text here 1
1 lect bld1 ph1 details text here 3
1 lect bld1 ph1 details text here 4
2 tour bld15 ph2 details text here 2
3 soci bld3 ph3 details text here 6
4 lect bld2 ph3 details text here 1
4 lect bld2 ph3 details text here 2
5 lect bld3 ph3 details text here 6
这对任何感兴趣的人来说都是可行的,最终的工作功能是:
function manytable(){
$dbcon = dbConnect::getInstance();
$stmt = $dbcon->db->prepare("
SELECT
b.session_id,
a.type,
a.location,
a.title,
a.details,
b.breakout_id
FROM `all_sessions` AS a
INNER JOIN `break_sess_pair` AS b
ON b.session_id = a.session_id
");
if($stmt->execute()){
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
}
感谢您的快速回复,唯一的问题是我现在得到一个返回的空数组。我需要更改我的pdo声明吗?它现在是“fetchAll(PDO::FETCH_ASSOC)”,再次感谢SunRay,我做了一些调整并使它工作起来。我确保我的sql数据类型在我的表中是一致的,并将ON语句更改为ON b.session\u id=a.session\u id。。。。这似乎起了作用
SELECT b.session_id,
a.type,
a.location,
a.title,
a.details,
b.breakout_session
FROM `all_sessions` as a
INNER JOIN `break_sess_pair` as b
ON 'break_sess_pair.session_id'='all_sessions.session_id'
function manytable(){
$dbcon = dbConnect::getInstance();
$stmt = $dbcon->db->prepare("
SELECT
b.session_id,
a.type,
a.location,
a.title,
a.details,
b.breakout_id
FROM `all_sessions` AS a
INNER JOIN `break_sess_pair` AS b
ON b.session_id = a.session_id
");
if($stmt->execute()){
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
}