MySQL знает общий столбец, как? - PullRequest
3 голосов
/ 28 ноября 2011

Я обычно выполняю JOIN между двумя таблицами, используя общий столбец, в данном случае 'product_code'.

Теперь приходит этот запрос, который делает это без объединения:

SELECT `rp_products`.`product_code`, `rp_log`.`customer_id`, `rp_products`.`product_name`
FROM rp_products, rp_log
WHERE (`rp_log`.`customer_id` = '111')
ORDER BY `rp_products`.`product_code` ASC, `rp_log`.`customer_id` ASC

Товозвращает:

product_code    customer_id     product_name
105             111             Paintballs 2000PBS
105             111             Paintballs 2000PBS
106             111             Gloves
106             111             Gloves

Что я хочу знать, как это показывает правильное «product_name» без объединения «product_code» между таблицами?product_code не является первичным ключом или чем-то подобным.product_name - это имя обоих столбцов в таблицах.

  • rp_log хранит идентификатор клиента, код продукта и дату покупки (здесь не показаны).
  • rp_products хранит код продукта, цену (здесь не отображается) и product_name.

Спасибо за потраченное время, Эван.

1 Ответ

3 голосов
/ 28 ноября 2011

Вы выполняете перекрестное произведение всей таблицы rp_products и вложенной таблицы rp_log, у которой customer_id равно 111. Я думаю, у вас есть две 111 записи в rp_log идве записи в rp_products;тогда каждая запись в каждой таблице (или под-таблице) в объединении будет сопряжена с каждой записью в другой, чтобы получить четыре (= 2 × 2) строки в вашем наборе результатов.

Включая больше столбцов изrp_log и rp_products могут прояснить для вас вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...