我有点坚持使用 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/