MySQL非常简单的连接示例请求子表

时间:2015-01-22 09:30:48

标签: php mysql join

我不断回到MySQL加入的问题。 我想请一个非常简单的例子,我可以用来继续学习MySQL语法的过程。

假设我得到了下表

test_testtable

  • testtable_id
  • testtable_name
  • testtable_user
  • testtable_option
  • testtable_textfield

test_testlink

  • testlink_id
  • testlink_link
  • testlink_address

test_address

  • ADDRESS_ID
  • ADDRESS_NAME
  • address_phone
  • address_email
  • address_street
  • ADDRESS_CITY
  • address_zip

我想做出如下选择:

SELECT * (lets say I would define the fields) FROM `test_testable` 
JOIN `test_testtable`.`testtable_id` = `test_testlink`.`testlink_link`
AND
JOIN `test_testlink`.`testlink_addres` = `test_address`.`address_id`
WHERE `user_id` = 5

因此,链接结构如下:

test_testtable。 testtable_id =领先

test_testlink 是一个表格,用于链接表格 test_testtable test_address

链接表 test_testlink 使用字段 testlink_link 链接到表 test_testtable ,并使用字段 testlink_address 链接到表 test_address

这不起作用。对我来说..因为我似乎无法捕捉到正确的语法逻辑。

所以我希望有人可以给我一个小例子,说明如何正确实现这样一个简单但关键的查询!

TIAD !!

3 个答案:

答案 0 :(得分:2)

一般方法:

SELECT table1.* FROM table1
JOIN table2 ON table2.id_table1 = table1.id
JOIN table3 ON table3.id_table2 = table2.id
WHERE table1.id = 10

出于您的目的:

SELECT * (lets say I would define the fields) FROM `test_testable` 
JOIN `test_testlink` ON `test_testtable`.`testtable_id` = `test_testlink`.`testlink_link`
JOIN `test_address` ON `test_testlink`.`testlink_addres` = `test_address`.`address_id`
WHERE `user_id` = 5

Please read the reference

答案 1 :(得分:2)

您使用的语法错误。您应该首先根据哪些字段提及要加入的表。

SELECT * (lets say I would define the fields) FROM `test_testable` 
INNER JOIN test_testlink 
ON `test_testtable`.`testtable_id` = `test_testlink`.`testlink_link`
INNER JOIN `test_address` 
ON `test_testlink`.`testlink_addres` = `test_address`.`address_id`
AND `test_testtable`.`user_id` = 5

答案 2 :(得分:1)

select * from testlink JOIN testtable ON testlink.tableid = testtable.ID
                       JOIN testaddress ON testlink.addressid = testaddress.ID
WHERE testtable.ID = 5