【发布时间】:2015-08-18 12:38:11
【问题描述】:
我有两个 MYSQL 表:“product”和“url_alias”。
+------------+--------+
| product |
+------------+--------+
| product_id | status |
+------------+--------+
| 1 | 1 |
| 2 | 0 |
| 3 | 1 |
+------------+--------+
+------------+------------+
| url_alias |
+--------------+----------+
| query | keyword |
+--------------+----------+
| product_id=1 | keyword1 |
| product_id=2 | keyword2 |
| product_id=3 | keyword3 |
+--------------+----------+
我正在编写 PHP 代码以从 url_alias 表中提取关键字列,但仅针对 product 表中具有相应状态 = 1 的 product_id。我认为这将涉及连接两列并同时使用过滤器。
$sql = "
SELECT p.product_id
, ua.keyword
FROM `".$this->tables["product"]."` p
WHERE p.status = 1
LEFT
JOIN `".$this->tables["url_alias"]."` ua
ON ua.query = CONCAT('product_id=',p.product_id) ";
到目前为止,我得到:
错误:您的 SQL 语法有错误;
谁能帮我解决这个问题?
【问题讨论】:
-
这闻起来很糟糕。如果
querycolumn always =product_id={id}然后将其设为 int 并删除product_id=部分。如果该列包含更多不同的数据{string}{id},则拆分为两列querystring和queryid -
令人惊讶的是,这就是错误消息所说的全部内容。您必须使用非常特殊的 mysql 版本。
-
友情提示:遇到 SQL 语法错误时,如果您可以访问它(命令行、phpmyadmin 等),请先在 DB 控制台中敲定查询。当你得到想要的结果时,开始把它转换成一个 php 友好的字符串。
-
@harris 我同意,这是一个很好的做法,但我已经尝试过了,也无法让它在那里工作。
-
@Strawberry 其余的错误信息并没有为这篇文章添加任何有用的信息,只是我的语法回显,所以我把它省略了。