2

我在 MySQL 中有四个表。

         +-----------------------------------------------+
Table 2  |                                       Table 1 |
+============+=========+========+============+   +==========+=====================+
|     ID     |   Name  |  Add   |    d_id    |   |   ID     |     Details         |
+============+=========+========+============+   +==========+=====================+
|     1      |    ABC  |  City  |     3      |   |    1     |    blah blah blah   |
+------------+---------+--------+------------+   +----------+---------------------+
:            :         :        :            :   :          :                     :
                                    |
          +-------------------------+
          |
Table 3   |                                    Table 4
+============+==========+============+         +=========+======================+      
|    d_id    | dis_Name |  cat_id    |----+    | cat_id  |    category_name     |
+============+==========+============+    |    +=========+======================+
|     1      | Myeloma  |     5      |    |    :         :                      :     
+------------+----------+------------+    |    +---------+----------------------+
:            :          :            :    +----|    5    |       Cancer         |
                                               +---------+----------------------+

我想要做的是,我想选择“表 1”中属于“表 4”中“类别名称”的所有行。表 2 可能包含具有相同“d_id”的多行。同样,表 3 可能有多行具有相同的“cat_id”。如果我选择“癌症”类别,那么我将在结果中从表 3 中获得多个 d_id。对于每个 d_id,表 2 中将有多个 ID。我想从表 1 中获取这些 ID 的详细信息(来自表 2)。查询语句是什么?

连接性显示在表格中。

4

2 回答 2

1

你可以这样做:

SELECT t1.*
FROM t4
INNER JOIN t3 ON (t4.cat_id = t3.cat_id)
INNER JOIN t2 ON (t3.d_id = t2.d_id)
INNER JOIN t1 ON (t2.id = t1.id)
WHERE t4.category_name = 'Cancer';
于 2013-06-03T00:34:36.630 回答
1

你需要的是一个加入。

SELECT table.column_in_table
FROM table
INNER JOIN table_with_same_values
ON table.column_in_table = table_with_same_values.column_in_that_table;

我仍然不清楚你想问什么。你的问题有点冗长。这里有一些额外的信息。

希望这可以帮助!

于 2013-06-03T00:00:25.450 回答