2012-01-24 4 views
0

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

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

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

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

+0

Это почти наверняка будет легче и более эффективным, делая это с помощью базы данных присоединиться –

ответ

0

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

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

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

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

+0

Это хорошая идея. Определенно лучше для организации и функциональности. Благодаря! – Michael

1

Не можете ли вы сделать число столбцов совпадающим, либо добавьте пустые в одно с меньшим или чем-то рядом с этими линиями и по-прежнему соберите их?

+0

выберите имя «», как электронная почта от customer1 профсоюза выберите имя, адрес электронной почты из customer2 –

Смежные вопросы