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;
  }
}