0

嗨,我需要通过用户 ID 的单个 mysql 查询来显示多个表中的值。我有 6 桌以下...

国家: countryid, 国家

state : stateid, statename, countryid

城市:cityid,城市,stateid。

类别:类别ID,类别名称。

sub_categories : sub_category_id, sub_category_name。

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

现在我想按用户 ID 显示所有详细信息。我写了查询,之后它只显示国家、州、类别和子类别的 ID,而不显示它们的名称。我正在使用 select 语句以及 join 语句。但没有得到准确的输出。我有加入表查询的基本知识。请给出想法或查询以显示我的输出。

4

2 回答 2

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 - 这将更符合您的列命名约定的其余部分。

于 2012-09-08T08:30:06.360 回答
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;
于 2012-09-08T08:39:58.560 回答