0

ユーザーがテキストまたは画像を投稿できる php/mysql でブログを作成しています。

テキストの場合、次のような URL があります: www.example.com/text.php?id=...

画像の場合、次のような URL があります: www.example.com/image.php?id=...

2 つの異なるテーブルにテキストと画像を挿入しています。

Table Image:
-id
-url
-date

Table Text:
-id
-body
-date

この時点で、ホームページで、テキストと画像を結合した最新の URL を返すクエリを実行する必要があります。したがって、UNIONを使用する必要があります:

SELECT id
FROM image
ORDER BY date DESC
UNION
SELECT id
FROM text
ORDER BY date DESC

しかし、タイプ ( text または image ) を区別する方法も必要なので、ホームページで www.example.com/text.php?id= OR www.example.com/image.php? を使用する必要があるかどうかがわかります。 ID=

例えば:

SELECT id, TYPE_1
FROM image
ORDER BY date DESC
UNION
SELECT id, TYPE_2
FROM text
ORDER BY date DESC

mysql でそれを行う方法はありますか?

4

2 に答える 2

3

このようなものが動作するはずです:

SELECT id, 'image' AS type
FROM image
ORDER BY date DESC
UNION
SELECT id, 'text' AS type
FROM text
ORDER BY date DESC

結果には 2 つの列があります。「タイプ」をチェックして、それが画像かテキストかを確認し、行を適切に処理できます。

于 2013-06-13T17:30:21.163 に答える
0

union重複は削除されないため、 で直接これを行うことはできません。union allその後、重複したエントリを削除してから削除する必要があります。

select id, type_1,
       (case when min(which) = max(which) then min(which)
            else 'BOTH'
        end) as WhereFrom
from (SELECT id, TYPE_1, date, 'image' as which
      FROM image
      UNION all
      SELECT id, TYPE_2, date, 'text' as which
      FROM text
     ) t
group by id, type_1
order by max(date) desc
于 2013-06-13T17:33:12.900 に答える