0

テーブル構造: ここに画像の説明を入力してください

SELECT p.id id, p.type
    TYPE , v.provider provider, v.video_id video_id, NULL content, NULL url, NULL posted_by
    FROM post p
    INNER JOIN p_video v ON p.id = v.id
    AND p.type =  'video'
    UNION 
    SELECT p.id, p.type, NULL , NULL , t.content, NULL , NULL 
    FROM post p
    INNER JOIN p_text t ON p.id = t.id
    AND p.type =  'text'
    UNION 
    SELECT p.id, p.type, NULL , NULL , NULL , i.url, NULL 
    FROM post p
    INNER JOIN p_image i ON p.id = i.id
    AND p.type =  'image'
    UNION 
    SELECT p.id, p.type, NULL , NULL , NULL , l.url, NULL 
    FROM post p
    INNER JOIN p_link l ON p.id = l.id
    AND p.type =  'link'
    UNION 
    SELECT p.id, NULL , NULL , NULL , NULL , NULL , u.name
    FROM post p
    LEFT JOIN user u ON p.user_id = u.id
    ORDER BY id DESC 
    LIMIT 0 , 30

mySQL出力

私の構文エラーは何ですか?2行になるだけですが、すべての出力を別々の1行にしたいです。

4

2 に答える 2

1

これを試して

SELECT p.id id, p.type
TYPE , v.provider provider, v.video_id video_id, NULL content, NULL url, u.name posted_by
FROM post p
LEFT JOIN user u ON p.user_id = u.id
INNER JOIN p_video v ON p.id = v.id
AND p.type =  'video'
UNION 
SELECT p.id, p.type, NULL , NULL , t.content, NULL , u.name
FROM post p
LEFT JOIN user u ON p.user_id = u.id
INNER JOIN p_text t ON p.id = t.id
AND p.type =  'text'
UNION 
SELECT p.id, p.type, NULL , NULL , NULL , i.url, u.name
FROM post p
LEFT JOIN user u ON p.user_id = u.id
INNER JOIN p_image i ON p.id = i.id
AND p.type =  'image'
UNION 
SELECT p.id, p.type, NULL , NULL , NULL , l.url, u.name
FROM post p
LEFT JOIN user u ON p.user_id = u.id
INNER JOIN p_link l ON p.id = l.id
AND p.type =  'link'
ORDER BY id DESC 
LIMIT 0 , 30
于 2012-12-08T18:11:19.143 に答える
0

これが最後のユニオン選択であり、2行目を追加します。各行でそれを使用したい場合は、すべてのユニオン選択部分に左結合を追加し、最後のユニオン選択を省略します

SELECT p.id id, p.type
TYPE , v.provider provider, v.video_id video_id, NULL content, NULL url, u.name posted_by
FROM post p
INNER JOIN p_video v ON p.id = v.id
AND p.type =  'video'
LEFT JOIN user u ON p.user_id = u.id
UNION 
SELECT ...
...
ORDER BY id DESC 
LIMIT 0 , 30
于 2012-12-08T18:12:24.057 に答える