MySQL选择查询从三个表中获取数据

时间:2019-02-11 14:23:43

标签: php mysql

我有三个如下表
表格名称:单词

+----+----------+--------+------------+--------+
| id | word     | letter | origin     |literal |
+----+----------+--------+------------+------------+----+
| 7  | അകക്കരപ്പന്‍ | അ      | അകം1-കരപ്പന്‍ |bc  |
+----+----------+--------+-------------------------+----+
| 8  | അകക്കഴി   | അ      | അകം1-കഴി   |af    |
+----+----------+--------+-----------------------+-----+

表名称:关系

+----+---------+---------------+-------+
| id | id_word | id_definition | rtype |
+----+---------+---------------+-------+
| 6  | 4       | 6             | നാ.   |
+----+---------+---------------+-------+
| 7  | 5       | 7             | നാ.   |
+----+---------+---------------+-------+

表名:定义

+----+------------+
| id | definition |
+----+------------+
| 1  | ചായ        |
+----+------------+
| 2  | ചായച്ചെടി   |
+----+------------+

我需要这些表中的文字,原点,rtype,定义。我使用了以下查询,

SELECT
    literal,
    origin,
    rtype,
    word.id,
    definition,
    id_definition
from definition, relation, word
WHERE
    word = '$wpm' AND
    relation.id_word = word.id AND
    definition.id = id_definition

但是不要得到蚂蚁结果。请给我正确的查询。

1 个答案:

答案 0 :(得分:3)

我看到您的查询有几个问题,最明显的是您使用的是现在不建议使用的旧式联接语法,而且联接条件定义不正确。我建议以下内容:

SELECT
    w.literal,
    w.origin,
    r.rtype,
    w.id,
    d.definition,
    r.id_definition
FROM word w
INNER JOIN relation r
    ON w.id = r.id_word
INNER JOIN definition d
    ON r.id_definition = d.id
WHERE
    w.word = ?;

请注意,我在word子句中将WHERE的值保留为占位符?。您应该阅读有关PHP中准备好的语句的信息,这将解释这意味着什么以及如何在PHP代码中处理/实现它。