2013-08-19 5 views
0

У меня возникли проблемы с запросом, соединяющим 4 таблицы, возвращающих слишком много результатов. Он возвращается в районе 95 результатов, а некоторые столбцы повторяют 10 раз, когда я полагаю, что это должно быть только 3, и с данными, которые не совпадают вообще.Почему этот запрос MySQL возвращает столько результатов?

Я начал писать это сообщение и понял, что я бы хорошо его описал в sqlfiddle для упрощения объяснения, но когда я запускал запрос там, он возвращал результаты, как я хочу, с 34 результатами и всеми линиями данных, где он должен , Мне интересно, почему запрос работает так, как хотелось бы там, а не на моем сервере. Я вижу, что они добавили 'extra: Using where; Использование временных; Использование filesort в ссылке выполнения просмотра. Итак, что я могу сделать, чтобы сделать это ясным результатом? Я пытаюсь создать таблицу, отображающую информацию о ценах. Я включил запрос здесь для справки.

SELECT DISTINCT 
    prices.sku, 
    prices.base_price, 
    prices.min_quantity, 
    price_breaks.break_point, 
    price_breaks.price, 
    price_breaks.bonus, 
    product_options.product_code, 
    product_options.size, 
    product_types.category_type, 
    product_types.product_type_name 
FROM prices 
LEFT JOIN price_breaks ON price_breaks.sku = prices.sku 
LEFT JOIN product_options ON product_options.sku = prices.sku 
LEFT JOIN product_types ON product_options.product_code = product_types.product_code 
WHERE prices.group = "a" 
ORDER BY product_code ASC, sku ASC, break_point ASC 

Вот скрипка: http://sqlfiddle.com/#!2/67c14/1/0

Спасибо за любые идеи.

ответ

0

Одна или несколько ваших таблиц в правой части левого соединения должны иметь несколько совпадающих строк объединения.

+0

О, дерьмо. Конечно. Ску не уникален. Добавление И price_breaks.group = prices.group полностью исправлено это. Я толчок. Спасибо. –

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