我有这样的数据库架构:
poll_option:
+----+---------------------+
| question_id | option |
+----+---------------------+
| 1 | forever |
+----+---------------------+
poll_clicks:
+--------------------+------------+
| question| meta_key | meta_value |
+---------+----------+------------+
| 1 | ip |192.168.1.10|
+---------+----------+------------+
result i want:
+--------------------+------------+
| option | meta_key | meta_value |
+---------+----------+------------+
| forever | ip |192.168.1.10|
+---------+----------+------------+
这是我的疑问:
SELECT p.* FROM poll_clicks p, poll_option m
WHERE m.question_id=p.question
但我得到重复的价值观, 任何想法?
编辑:只需要将“选项”添加到“poll_click”结果
答案 0 :(得分:0)
您的查询正在请求所有poll_clicks
列,但您的预期结果包含两个表中的值。
至于“重复值”,如果你的意思是你得到多行,那么只有一种方法可以发生:一个或两个表都有重复的question
或question_id
值。 / p>
要获得正确的列,查询应该像这样开始:
SELECT m.option, p.meta_key, p.meta_value
...
您的加入是正确的,但它使用古老的语法。尝试这样做 - 它与您的连接具有相同的效果,但它将连接逻辑与您可能拥有的任何其他WHERE
逻辑隔离开来:
SELECT m.option, p.meta_key, p.meta_value
FROM poll_clicks p
JOIN poll_option m ON m.question_id = p.question