我怎么能填满我的桌子?

时间:2013-08-06 08:54:51

标签: mysql sql

我想填写TableE,我有这些表。

表A

+------+--------+--------+
| A_ID | A_NAME | A_TYPE |
+------+--------+--------+
|   1  |  apple |    1   |
+------+--------+--------+

表B

+------+---------+--------+
| B_ID | B_NAME  | FROM_A |
+------+---------+--------+
|   1  | A_NAME  | A_ID   |
+------+---------+--------+

表C

+-------+------------+
|  C_ID |   C_NAME   |
+-------+------------+
| A_TYPE|    fruit   |
+-------+------------+
| A_TYPE| vegetables |
+-------+------------+

表D

+------+---------+
| D_ID | D_NAME  |
+------+---------+
|   1  |  fruit  |
+------+---------+

TableE

+------+--------+
| E_ID | E_NAME |
+------+--------+
| B_ID |  D_ID  |
+------+--------+

如何使用TableETableB B_ID填充TableD D_ID,其中C_Name =包含D_Name,TableCTableD之间没有密钥,只能通过TableATableB,其中A_ID是关键。

因此,如果apple是一个水果,请用TableE B_IDD_ID写一个SQL语句。 我怎么能这样做?

我在TableA和TableB中有2000行 我想将C_Name与D_Name进行比较,如果它相同,则在TableE中写入TableB中的ID和TableD中的ID。

1 个答案:

答案 0 :(得分:0)

  INSERT INTO TableE (E_ID , E_NAME)
  SELECT b.B_ID ,d.D_ID FROM TableA a 
  INNER JOIN TableB b ON b.FROM_A = a.A_ID
  INNER JOIN TableC c ON c.C_ID  = a.A_TYPE
  INNER JOIN TableD d ON  d.D_NAME = c.C_NAME