PHP MySQL 多重连接

标签 php mysql join

正在开发一个需要协作三个表的应用程序。 产品报价、交易、拒绝报价 换句话说:(可用产品)、(已购买产品)、(已拒绝产品、不感兴趣。)

产品报价包含所有产品数据:(名称、描述、价格、while 脚本中显示的任何内容)

我不想展示已购买或被拒绝的产品。

例如:

"Select * 
               JOIN Whatever
               JOIN Whatever
               (WHERE NOT IN PURCHASED OR DECLINED)";

我有一个工作代码,用于显示未拒绝的位置:

$products= "SELECT a.*, b.pID, b.userID, a.pID as pID FROM products a                   
                  LEFT JOIN declined_products b ON (a.pID = b.pID AND b.lenderID = '$userID')
                  WHERE b.pID is NULL AND b.userID is NULL
                  LIMIT $start, $maxres";

但是当我尝试添加第二个连接时,它不再起作用...(也许我使用了错误的连接端?老实说,我对连接很陌生。

$products= "SELECT a.*, b.*, c.*, a.pID as pID FROM products a                   
                  LEFT JOIN declined_products b ON (a.pID = b.pID AND                     b.lenderID = '$userID')
                  RIGHT JOIN p_transactions c ON (c.product = a.pID AND c.user_id = '$userID')
                  WHERE b.appID is NULL AND b.userID is NULL AND c.user_id <> '$userID' AND (`c.callback` != '1' or `c.callback` is NULL)
                  LIMIT $start, $maxres";

最佳答案

看到这样的东西

$products= "
SELECT a.*,
    b.*,
    c.*,
    a.pID as pID
FROM
    products AS a
LEFT JOIN
    declined_products AS b ON (a.pID = b.pID AND b.lenderID = '$userID')
INNER JOIN
    p_transactions AS c ON (c.product = a.pID AND c.user_id = '$userID')
WHERE
        b.appID is NULL
    AND
        b.userID is NULL
    AND
        c.user_id <> '$userID'
    AND
        (c.callback != '1' or c.callback is NULL)
    LIMIT $start, $maxres
";

我不会讨论 SQL 注入(inject),但会说查看 PDO 查询参数,

顺便说一句,JOIN 与 INNER JOIN 相同,只是在我看来它读起来更好。您几乎不需要使用右连接。我添加 AS 的原因与我喜欢使用 INNER JOIN 的原因相同。后来我就会知道这是故意的而不是打字错误。只是更具可读性,但这就是我的观点,“因为”无论哪种方式都有效。

关于PHP MySQL 多重连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37337952/

相关文章:

MySQL 连接、最近的、分组依据、每个 id 限制为 1 个结果

mysql - 如何在mysql中使用左外连接来获得我想要的结果?

php - PHP最优雅的走树方式

php - 如何创建这样的查询?

NetBeans 中映射(关联数组)的 PHP 类型提示?

mysql - 在 laravel seeder 类中存储真实数据可以吗?

php - 在 session 中存储什么?

php - 如何从mysql中选择一篇文章及其评论?

mysql - 连接 3 个表 - MySQL

mysql - 如何避免 LEFT JOIN 查询中的重复记录?