2012-04-17 14 views
-1

の制限:のMySQLを選択し、私は私のテーブルからの選択の結果を持って改ページ

id tag 
1 hey 
1 wow 
2 cry 
87 game 
87 bmw 
6 lady 
7 wow 

しかし、私は、JOINとなって、この結果。 私の完全なSQLクエリ:ページネーションのために

SELECT sites.id, sites.host, sites.url, sites.password, sites.status, sites.pr, sites.tyc, sites.alexa, sites.lastcheck, sites.comment, tags.tagname, tags.tagid FROM sites 
LEFT JOIN sites_tags ON sites_tags.shellid = sites.id 
LEFT JOIN tags ON sites_tags.tagid = tags.tagid 

私は、クエリから3実際件のデータを必要としています。

私のクエリの場合 - LIMIT 3、私は

1 hey 
1 wow 
2 cry 
87 game 
87 bmw 

なく

例えば
1 hey 
1 wow 
2 cry 

を取得したいですIDで制限されたすべての結果が必要で、行では必要ありません。

大変申し訳ございません。

+2

表示されているクエリでは、表示しているサンプルデータセットが得られません。正確に何を達成しようとしているのかを理解するのが難しくなります。 – Romain

+0

それが最適な解決策であるかどうかは分かりませんが、複数の結合を持つクエリのビューを作成するために使用されています。制限はありません。また、データベース内で何かを直接チェックする必要がある場合は、特別な状況で簡単に作業できます –

答えて

2
SELECT 
    s.id, 
    s.host, 
    s.url, 
    s.password, 
    s.status, 
    s.pr, 
    s.tyc, 
    s.alexa, 
    s.lastcheck, 
    s.comment, 
    tags.tagname, 
    tags.tagid 
FROM (
    SELECT 
     id, 
     host, 
     url, 
     password, 
     status, 
     pr, 
     tyc, 
     alexa, 
     lastcheck, 
     comment 
    FROM sites 
    LIMIT 3 
) s 
LEFT JOIN sites_tags ON sites_tags.shellid = s.id 
LEFT JOIN tags ON sites_tags.tagid = tags.tagid 

をこれが何を望んでいることは、正確に3つのサイトに関連するタグであることを前提としています。これにより、3つのサイトのサイト情報が選択され、存在する場合は任意のタグも選択されます。

それはあなたが望むものを正確には戻りませんしかし、あなたはより良いsites

SELECT 
    id, 
    host, 
    url, 
    password, 
    status, 
    pr, 
    tyc, 
    alexa, 
    lastcheck, 
    comment 
FROM sites 
LIMIT 3 

からすべてのフィールドを選択するには1つのクエリを実行するために押され、その後のタグを取得するには、次の操作を行うための第二されるだろうそれらのサイト。

SELECT 
    sites_tags.shellid AS id, 
    tags.tagname, 
    tags.tagid 
FROM sites_tags 
INNER JOIN tags ON sites_tags.tagid = tags.tagid 
WHERE sites_tags.shellid IN (..... your ids go here ......) 
1

idsites.idを参照していることを推測する)

FROM sitesを置き換えます

FROM (SELECT * 
     FROM sites 
     ORDER BY whatever 
     LIMIT 3 
    ) AS sites 
関連する問題