MySQL разделяет две таблицы в общем запросе

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

Я хотел бы сделать раздел «последние 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 для овощей).

0

Решение

Вы могли бы также использовать 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 не имеет возможности идентифицировать таблицу для определенного столбца, если вы не укажете ее явно.

1

Другие решения

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

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;
0

По вопросам рекламы [email protected]