Повторение строк в MYSQL - PullRequest
0 голосов
/ 01 июня 2018

Mysql запрос:

SELECT 
 customer.full_name, 
 transaction.transaction_amount, 
 transaction.id, 
 merchant.shop_name 
FROM 
 customers customer, 
 customers_transaction_details transaction, 
 users merchant 
WHERE 
 transaction.merchant_id = 1 AND transaction.customer_id = customer.id

Я пытаюсь объединить три таблицы, которые состоят из customers, customers_transaction_details и users.

customers_transaction_details состоит из двух внешних ключей: customer_id из таблицы клиентов и merchant_id из таблицы пользователей.

Результат, основанный на запросе выше:

enter image description here

По праву должно быть только 4 записи.Первые 4 записи верны, но есть повторение 121 131 141 и 151 без названия магазина.Как я могу это исправить?

1 Ответ

0 голосов
/ 01 июня 2018

Это исправит это:

WHERE 
  transaction.merchant_id = merchant.id AND transaction.customer_id = customer.id AND merchant.id = 1

Просто нужно условие для отображения transaction и users таблиц.Установка transaction.merchant_id=1 сама по себе недостаточна, поскольку таблица users оставлена ​​неограниченной.

Но не делайте этого!

Синтаксис объединения в этомзапрос устарел, и так было уже более 20 лет.Напишите ваши объединения следующим образом:

SELECT 
    customer.full_name, 
    transaction.transaction_amount, 
    transaction.id, 
    merchant.shop_name 
FROM customers customer 
INNER JOIN customers_transaction_details transaction ON transaction.customer_id = customer.id
INNER JOIN users merchant ON transaction.merchant_id = merchant.id
WHERE transaction.merchant_id = 1 AND 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...