0

こんにちは、ユーザー ID による 1 つの mysql クエリで複数のテーブルの値を表示する必要があります。私は6つのテーブルをフォローしています...

: 国 ID、国

: 州 ID、州名、国 ID

都市: 都市 ID、都市、州 ID。

カテゴリ: カテゴリ ID、category_name。

sub_categories : sub_category_id、sub_category_name。

users : userid、username、countryid、stateid、city、category_id、および sub_category_id。

ここで、すべての詳細をユーザー ID 別に表示したいと考えています。クエリを作成した後、国、州、カテゴリ、および sub_category の 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 に答える