PHP MySql запрашивает 2 таблицы, которые не имеют общих атрибутов одновременно? - PullRequest
0 голосов
/ 19 августа 2010

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

Запрос 1 - первый запрос на странице будет получать тексти изображения, найденные по всей странице из таблицы A.

Запрос 2. Второй запрос будет извлекать несколько продуктов с изображением, описанием и названием для каждого продукта из таблицы B.

Я знаючто помещение второго запроса в цикл while первого запроса будет работать, но, конечно, очень неэффективно.

Как я могу и как лучше всего получить все данные, которые мне нужны, через 1 запрос?

Спасибо,

  • Датчанин

Ответы [ 3 ]

3 голосов
/ 19 августа 2010

Итак, все, что вы хотите знать, это нормально, если у вас есть 2 запроса на одной веб-странице? Это хорошо. Идите прямо вперед. Это совершенно нормально. Никто не ожидает объединения между новостями стола и продуктами стола. Обычно два запроса используются для извлечения данных из двух несвязанных таблиц.

0 голосов
/ 19 августа 2010

Если нет возможности связать две таблицы друг с другом, вы не можете использовать JOIN для получения записей из обеих.Вы COULD используете запрос UNION, но это предполагает, что вы можете сопоставлять поля из каждой таблицы, поскольку UNION требует, чтобы вы выбирали одинаковое количество / тип полей из каждой таблицы.

Но это очень уродливо.Вы по-прежнему вынуждаете сервер БД выполнять два запроса в фоновом режиме плюс дополнительную работу по объединению их в один набор результатов, а затем вам нужно проделать дополнительную работу, чтобы распутать код при загрузке.1007 * Гораздо проще, концептуально и с точки зрения обслуживания выполнять вместо этого два отдельных запроса.

0 голосов
/ 19 августа 2010

Использовать ВЛЕВО или ВНУТРЕННЕЕ СОЕДИНЕНИЕ (зависит от того, хотите ли вы отобразить записи из Таблицы А, у которых нет соответствующих записей в Таблице В)

SELECT a.*, b.*
FROM TableA a
[LEFT or INNER] JOIN TableB b ON (b.a_id = a.id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...