php - 基于多对多表调用一张表的信息

标签 php mysql sql many-to-many

我有点坚持使用 mySQL 和 PHP 的 INNER JOIN 概念来调用两个表中的信息。我认为自己是 PHP 和 mySQL 的高级初学者,有时也会使用 Dreamweaver。

我拥有的是一个带有主键 account_id 的“帐户”表,当用户登录时,该表将存储到 session 中。我有一个存储 account_id 的 m2m 表code> ,它是 product_id。最后,我有一个 Productions 表,其主键为(您猜对了)production_id。我想做的是让它查找用户分配到的所有作品(通过 m2m 表),并从作品表本身提取这些特定作品的详细信息。我假设使用 INNER JOIN 是解决这个问题的方法?

这是我尝试执行的内容(请注意,“sessionaccountid”已在 Dreamweaver 端设置以提取 session 数据)。

SELECT *
FROM Productions
JOIN  Accounts Productions Junction on account_id = sessionaccountid

不幸的是,这在 mySQL 中出现了“非唯一表”错误。任何有关使其正确锁定的指导将不胜感激!当然,如果你也能解释一下我做错了什么/你的建议如何更有意义,这样我就可以自己写下来,那就太好了!

最佳答案

因为您当前的查询既不遵循隐式也不遵循显式 JOIN 语法,因此是不正确的。

使用显式 ANSI JOIN 语法并指定表在查询中的关联方式

SELECT a.account_id, a.account_name, p.production_id, p.production_name 
  FROM Junction j JOIN Accounts a
    ON j.account_id = a.account_id JOIN Productions p
    ON j.production_id = p.production_id
 WHERE j.account_id = ?

这里是SQLFiddle 演示

关于php - 基于多对多表调用一张表的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20038746/

相关文章:

javascript - Bootstrap 表 : sort by date field

MySQL 索引未命中

mysql - 在存储过程中使用 LIKE 并同时转义注入(inject)

php - 如何在 PHP 中将 time() 转换为 09/02/2010 的格式?

php - 新手程序员需要动力

php - 根据 <select> 输入更改 MySQL 查询以更改 Highcharts 图表

Mysql:为什么在定义表时要使用适当的数据大小并选择最佳数据长度

javascript - node-mysql2 Final block 和connection.end()不想被调用

mysql - GROUP BY chat_id - 仅当所有条件的行都匹配时返回

mysql - 选择一个月内和24小时内MySQL的用户状态