Упорядочение двух таблиц по одной дате с PHP, MYSQL (PDO)

0

Вот некоторые сумасшедшие проблемы, с которыми я сражаюсь в течение очень долгого времени: у меня есть две таблицы с одинаковой структурой, допустим, что они are dogs_table и cats_table

dogs_table:
-id
-dog_posts
-dog_date

cats_table:
-id
-cat_posts
-cat_date

Я хотел бы создать временную шкалу из dog_posts и cat_posts, аналогичную этой: Изображение 174551 dog_posts должны идти влево и cat_posts вправо, но они должны быть объединены как одна таблица, упорядоченная по дате времени каждого из них. (В любом случае временная шкала подавляется). До сих пор я пытался использовать UNION как это:

SELECT cat_posts as posts, cat_date as date, 'cats' as type from cats_table
UNION
SELECT dog_posts as posts, dog_date as date, 'dogs' as type from dogs_table
ORDER BY date desc

Но эти или подобные UNION пути абсолютно не работают на меня, потому что делают как собак, так и кошек, как один, и мне нужно иметь возможность выводить row либо с помощью dog_posts, либо cat_posts. Итак, мне интересно, есть ли какой-то лучший способ, чем использовать UNION или, возможно, есть способ достичь этого результата с UNION, но я просто не знаю правильного синтаксиса. И я не знаю, как использовать JOIN тоже... Итак, любая помощь будет высоко оценена, спасибо всем за внимание.

Теги:

1 ответ

1

Альтернативный способ того, что я написал в комментариях, - это полное внешнее соединение. Обычно я не использую полные внешние соединения, но когда я это делаю, я использую следующий метод: выберите все различные значения из столбцов объединения обеих таблиц (которые в вашем случае являются dog_date и cat_date). Используйте его в подзапросе и левые соединяйте две таблицы в этих столбцах.

select dogs.dog_post, dates.date, cats.cat_post
from (
    select dog_date as date from dogs_table
    union 
    select cat_date as date from cats_table
) dates
left join dogs_table dogs on dogs.dog_date = dates.date
left join cats_table cats on cats.cat_date = dates.date
order by dates.date

Однако - я не знаю, что вы собираетесь делать, если несколько строк имеют одну и ту же дату.

  • 0
    Можно ли выбрать еще несколько строк из другой таблицы, называемой, например, users ? В этой таблице нет time рядов, но я бы хотел выбрать идентификатор, имя пользователя или другое. Какой будет синтаксис тогда?
  • 0
    Это не похоже на смысл.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню