2014-10-01 2 views
0

У меня есть сайт, на котором пользователи могут просматривать, скажем, «фрукты» и «овощи». У меня есть таблица fruit_review и vegetable_review. Оба имеют reviewId, fruitName/vegetableName, reviewText и поля даты.MySQL отдельные две таблицы в общем запросе

Я хотел бы сделать раздел «последние 5 отзывов» на моей индексной странице, например.

Для этого я использую следующий запрос:

SELECT reviewId AS id, fruitName AS name, reviewText AS text, date FROM fruit_review 
UNION 
SELECT reviewId AS id, vegetableName AS name, reviewText AS text, date FROM vegetable_review 
ORDER BY date DESC LIMIT 5; 

Это хорошо работает, но я хотел бы использовать эти результаты в качестве ссылки на обзор.

Как я могу решить, являются ли отзывы, которые я только что получил, относятся к фруктам или овощам? (href = "vegetablereview.php? Id = $ id" или href = "fruitreview.php? Id = $ id" для каждого случая?)

Можно ли включить что-то в запрос, что возвращает, например, имя таблицы, что я могу обрабатывать в php?

Я бы не хотел добавлять дополнительные столбцы в таблицы (например, столбец типа, который всегда равен 0 для фруктов и 1 для овощей).

ответ

1

Вы также можете использовать union all. Это более эффективно:

SELECT 'fruit' as which, reviewId AS id, fruitName AS name, reviewText AS text, date FROM fruit_review 
UNION ALL 
SELECT 'vegetable' as which, reviewId AS id, vegetableName AS name, reviewText AS text, date FROM vegetable_review 
ORDER BY date DESC 
LIMIT 5; 

Другими словами, вы должны обращаться с ним явно. MySQL не имеет возможности идентифицировать таблицу для определенного столбца, если вы не укажете его явно.

0

Вы можете добавить настраиваемое поле (тип) и заполнить его текстовыми фруктами или овощами для каждой линии.

SELECT reviewId AS id, fruitName AS name, 'fruit' as type, reviewText AS text, date FROM fruit_review 
UNION 
SELECT reviewId AS id, vegetableName AS name, 'vegetable' as type, reviewText AS text, date FROM vegetable_review 
ORDER BY date DESC LIMIT 5; 
Смежные вопросы