Объединение двух разных массивов из двух разных запросов MySql - PullRequest
0 голосов
/ 25 января 2012

На моем сайте есть фид друзей, в который я хочу объединить действия.Например, прямо сейчас он просто возвращает то, что искали ваши друзья.Тем не менее, я также хочу, чтобы он отображал то, что им понравилось в одном и том же фиде, что приводит к фиду поисков и избранного, отсортированных в хронологическом порядке.

Проблема в том, что я не могу найти хороший способ решения этой проблемы.Я не могу использовать MySql UNION, потому что две таблицы, из которых я буду извлекать (таблица поиска и любимая таблица), не имеют одинакового количества столбцов, и мне нужно больше столбцов из одной, чем из другой.

Я посмотрел в JOIN, но это сложно, потому что я уже соединяю две таблицы вместе, чтобы вернуть результаты поиска.

О чем я думал - есть ли способ выполнить два запроса по отдельности, получить выходные данные как массивы и объединить их с php на основе столбца времени?

Ответы [ 2 ]

1 голос
/ 25 января 2012

Разве вы не можете сделать так, чтобы номер столбца совпадал, либо добавьте пустые к столбцу с меньшим, либо что-то в этих строках и все же сделайте так, чтобы они совпадали?

0 голосов
/ 25 января 2012

Да, можно выполнить два запроса по отдельности, получить выходные данные как массивы и объединить их с php, но нет, вы не хотите делать это таким образом.Вы открываете себе неразбериху с кодом, как только понимаете, что вам не хватает поисков и избранных, но вам также нужны лайки и публикации.

Мое предложение:

  • Для каждой таблицы создайте соответствующее представление, все такие представления имеют общую структуру.Я имитирую шаблон интерфейса / реализации других языков здесь.Убедитесь, что в вашей структуре представления есть временная метка, описательный столбец, идентификатор пользователя и т. Д. Все, что вам нужно
  • Выполните комбинированный запрос по интерфейсам: SELECT * FROM searches_view WHERE ... UNION SELECT * FROM favorites_view WHERE ... ORDER BY date_submitted DESC

таким образом, ваше приложение может полагаться на стандартизированный «интерфейс» для поиска через «search_view» и т. д., в результате чего расширение до нескольких типов элементов становится тривиальным.

...