使用不同的表连接同一个表

时间:2014-09-29 23:31:53

标签: sql join

我想知道是否有人可以帮助我,我有这些表:

tbl_search_history(id,fld_user_id,fld_username_fld_make_id,fld_model_id,fld_year_id,fld_category_id)

fld_make是品牌的名称:

tbl_make(id,fld_make) 

fld_model是该模型的名称

tbl_model(id,fld_model) 

fld_year是该年的名称

tbl_year(id, fld_year) 

fld_category是该类别的名称

tbl_category(id,fld_category)

现在,我需要在页面中显示一个表格,我需要在其中显示以下字段:makemodelyearcategory。我还想知道如何在页面中显示makemodelyear和类别名称(而不仅仅是tbl_search_history中的参考号码)?你能给我一段代码和一个简短的解释吗?

提前致谢!

3 个答案:

答案 0 :(得分:2)

您的问题有点不清楚,但这听起来像是一个家庭作业问题。
我会给你一些伪代码和参考。
首先我会在JOINS上做一些阅读。
如果您要求获取列名,请参阅this SO question
我相信你想做的就是这样加入你的桌子:

SELECT table1.desired_field, table2.desired_field2, table3.desired_field3
FROM table1
JOIN table2 ON table1.table2_id = table2.id
JOIN table3 ON table1.table3_id = table3.id

等等。

答案 1 :(得分:1)

SELECT 
    tbl_model.fld_make,
    tbl_make.fld_model,
    tbl_year.fld_year,
    tbl_category.fld_category
FROM
    tbl_search_history
    INNER JOIN tbl_make ON tbl_search_history.fld_make_id = tbl_make.id
    INNER JOIN tbl_model ON tbl_search_history.fld_model_id = tbl_model.id
    INNER JOIN tbl_year ON tbl_search_history.fld_year_id = tbl_year.id
    INNER JOIN tbl_category ON tbl_search_history.fld_category_id = tbl_category.id

假设搜索历史表是将所有这些其他表链接在一起的表。还假设所有这些表都有链接值(即tbl_search_history中的非null id),否则你需要使用OUTER JOIN。

答案 2 :(得分:0)

您要做的是使用您在make中的model加入yearcategoryidtbl_search_history表格。 SELECT * FROM `tbl_search_history` INNER JOIN `tbl_make` ON tbl_search_history.fld_make_id = tbl_make.id #keep going for model, year, and category tables using their respective ids.

这种东西会让你想要你想要的东西:

{{1}}

希望这有帮助!