使用php从多个mysql表中获取和显示值

时间:2012-09-08 08:10:06

标签: php mysql

我需要通过userid通过单个mysql查询显示多个表中的值。我有6张桌子......

国家/地区:countryid,country

:州政府,州名,国家/地区

城市:cityid,city,stateid。

类别:categoryid,category_name。

sub_categories :sub_category_id,sub_category_name。

用户:userid,username,countryid,stateid,city,category_id和sub_category_id。

现在我想通过userid显示所有细节。我写了查询,之后只显示国家,州,类别和子类别的ID,而不显示他们的名字。我正在使用select语句和join语句。但没有得到确切的输出。我有加入表查询的基本知识。请提供想法或查询以显示我的输出。

2 个答案:

答案 0 :(得分:1)

你可以使用这样的连接:

select
    a.username,
    b.country,
    c.statename,
    d.city,
    e.category_name,
    f.sub_category_name
from
    users a
        join country b
            on a.countryid=b.countryid
        join state c
            on a.stateid=c.stateid
            and a.countryid=c.countryid
        join city d
            on a.city=d.cityid
            and a.stateid=d.stateid
        join categories e
            on a.category_id=e.categoryid
        join sub_categories f
            on a.sub_category_id=f.sub_category_id

我在这里使用您的问题中的users.city列名称,它是否真的是cityid - 它将更符合您的列命名约定的其余部分。

答案 1 :(得分:0)

数据库结构可能更好,并且在表中始终具有统一的命名法,编写查询更容易。

这样的事情应该足够了:

SELECT c.country, s.statename, ci.city, ca.category_name, sc.sub_category_name FROM country c, state s, city ci, categories ca, sub_categories sc, users u WHERE u.country.id = c.countryid, u.stateid = s.stateid, u.city = ci.city, u.category_id = ca.categoryid AND u.sub_category_id = sc.sub_category_id ORDER BY u.userid DESC;