2012-09-08 41 views
0

您好,我需要通過用戶ID的單個mysql查詢來顯示多個表中的值。我遇到6名錶如下...使用php獲取和顯示多個mysql表中的值使用php

國家:countryid,國家

狀態:STATEID,Statename的,countryid

城市:cityid,城市,STATEID。

類別:categoryid,category_name。

sub_categories:sub_category_id,sub_category_name。

users:用戶名,用戶名,countryid,stateid,city,category_id和sub_category_id。

現在我想通過用戶ID顯示所有細節。我寫了查詢後,它顯示國家,國家,類別和sub_category只有身份證,並不顯示他們的名字。我使用select語句以及加入語句。但沒有得到確切的輸出。我有加入表格查詢的基本知識。請提供想法或查詢以顯示我的輸出。

回答

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雖然 - 這將更加符合您的列命名約定的其他。

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; 
相關問題