【问题标题】:LEFT OUTER JOIN with a WHERE clause on the first table第一个表上带有 WHERE 子句的 LEFT OUTER JOIN
【发布时间】:2013-05-22 03:57:50
【问题描述】:

我想SELECT 表中的一些行,但这些行必须满足column = value 之类的条件。这是我的SELECT 声明:

$query = "SELECT t1.title, t1.introtext, t2.jr_street, t2.jr_city, 
    t2.jr_state, t2.jr_postalcode, t2.jr_country, t3.created, t3.name, 
    t3.title, t3.comments, t4.ave 
FROM $table1 t1
    LEFT OUTER JOIN $table2 t2 ON t1.id = t2.contentid
    LEFT OUTER JOIN $table3 t3 ON t1.id = t3.pid
    LEFT OUTER JOIN $table4 t4 ON t1.id = t4.reviewid
";

我尝试在FROM 语句后添加WHERE 子句,但出现SQL 语法错误。

【问题讨论】:

  • 您是否尝试在最后一个JOIN 之后添加WHERE 子句?
  • 你尝试过的WHERE子句是什么?

标签: php mysql outer-join


【解决方案1】:

看来我得猜到你的问题了。下次你应该给我们你的完整例子一个确切的错误。你尝试过这样的事情吗?

$value = (int) $_POST['value'];
$query = "SELECT t1.title, t1.introtext, t2.jr_street, t2.jr_city, t2.jr_state,
t2.jr_postalcode, t2.jr_country, t3.created, t3.name, t3.title, 
t3.comments, t4.ave FROM $table1 t1
LEFT OUTER JOIN $table2 t2 ON t1.id = t2.contentid
LEFT OUTER JOIN $table3 t3 ON t1.id = t3.pid
LEFT OUTER JOIN $table4 t4 ON t1.id = t4.reviewid
WHERE t2.column = ".$value."
AND t1.catid=8";

我只是猜你想从 table2 中选择;)你必须填写正确的表格和列。我还将类别选择放在 where 子句中,因为恕我直言,这使它更具可读性。

请绝对确保所有变量,如$value(和表格)都保存在查询中以供使用,例如$value 是一个整数,并且表格在您的代码中明确设置并且不是用户输入。您可以在此处阅读有关 SQL 注入的更多信息:

【讨论】:

    猜你喜欢
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多