我需要通过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语句。但没有得到确切的输出。我有加入表查询的基本知识。请提供想法或查询以显示我的输出。
答案 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;