Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Выбрать категорию где 0 товаров
lans8097  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Даже не смотри сюда
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 197
Пользователь №: 30468
На форуме: 5 лет, 25 дней
Карма: 3




Добрый день подскажите что делаю не так.

Есть 3 таблици

1 category 1 000 записей
c_id
c_name

2 product 400 000 записей
p_id
p_name

3 category_to_product 1 500 000 отношений
c_id
p_id

Надо выбрать категорию где количество продуктов равно 0.

Делаю вот такой запрос

SELECT
`category`.*,
count(`product`.`p_id`) as `p_count`,
FROM `category`
LEFT JOIN category_to_productON (category.c_id = category_to_product.c_id)
JOIN product ON (product.p_id = category_to_product.p_id)
GROUP BY `category_id`.`c_id`


Почему-то в результате не все записи а только те у которых есть товары..... где я ошибся ?

PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
McLotos  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



武士道
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1225
Пользователь №: 28342
На форуме: 5 лет, 5 месяцев, 26 дней
Карма: 28




Смотрите, есть такой вариант.
1. Убираете 3 таблицу за ненадобностью
2. Создаете поле cat_id в таблице продуктов
Получится примерно так

CREATE TABLE `product` (
`id` int(11) NOT NULL,
`p_name` varchar(50) NOT NULL,
`cat_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE `category` (
`id` int(11) NOT NULL,
`c_name` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Выполняете запрос

select `category`.*, `product`.*
from `category`
left join `product` on `category`.`id`=`product`.`id`
where `product`.`id` is null


3. Радуетесь результату


--------------------
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 19 дней
Карма: 167




Цитата (McLotos @ 4.10.2016 - 06:23)
Убираете 3 таблицу за ненадобностью

с какого это перепугу?


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
lans8097  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Даже не смотри сюда
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 197
Пользователь №: 30468
На форуме: 5 лет, 25 дней
Карма: 3




Цитата (McLotos @ 4.10.2016 - 03:23)
Смотрите, есть такой вариант.
1. Убираете 3 таблицу за ненадобностью
2. Создаете поле cat_id в таблице продуктов
3. Делаете связь между таблицами
Получится примерно так

CREATE TABLE `product` (
  `id` int(11) NOT NULL,
  `p_name` varchar(50) NOT NULL,
  `cat_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE `category` (
  `id` int(11) NOT NULL,
  `c_name` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Выполняете запрос

select `category`.*, `product`.*
from `category`
left join `product` on `category`.`id`=`product`.`id`
where `product`.`id` is null


4. Радуетесь результату

Я был-бы рад, но мне дали именно такую базу именно с такой структурой =)....
Таким д****м я себя давно не чувствовал...
Увы товар может принадлежать хоть двадцатью категориям.
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
McLotos  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



武士道
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1225
Пользователь №: 28342
На форуме: 5 лет, 5 месяцев, 26 дней
Карма: 28




Цитата (lans8097 @ 4.10.2016 - 09:28)

Увы товар может принадлежать хоть двадцатью категориям.

Это меняет ситуацию, надо подумать.


--------------------
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1755
Пользователь №: 20757
На форуме: 6 лет, 10 месяцев, 7 дней
Карма: 184




Цитата (lans8097 @ 4.10.2016 - 09:38)
Надо выбрать категорию где количество продуктов равно 0.

SELECT c.*
FROM category AS c
LEFT JOIN category_to_product AS cp ON c.c_id=cp.c_id
WHERE cp.p_id IS NULL
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
McLotos  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



武士道
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1225
Пользователь №: 28342
На форуме: 5 лет, 5 месяцев, 26 дней
Карма: 28




Цитата (kaww @ 4.10.2016 - 09:38)
SELECT c.*
FROM category AS c
LEFT JOIN category_to_product AS cp ON c.c_id=cp.c_id
WHERE cp.p_id IS NULL


Обогнал меня =)


--------------------
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
lans8097  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Даже не смотри сюда
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 197
Пользователь №: 30468
На форуме: 5 лет, 25 дней
Карма: 3




Цитата (kaww @ 4.10.2016 - 03:38)
Цитата (lans8097 @ 4.10.2016 - 09:38)
Надо выбрать категорию где количество продуктов равно 0.

SELECT c.*
FROM category AS c
LEFT JOIN category_to_product AS cp ON c.c_id=cp.c_id
WHERE cp.p_id IS NULL

По началу я так и сделал, но меня смутило фраза где 0 товаров а если то где 2 ? )).
Мне кажется что это уже у меня разыгрался перфикционист
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 783
Пользователь №: 36058
На форуме: 3 года, 11 месяцев, 12 дней
Карма: 40




Что в Вашей задаче есть "количество продуктов"?


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
lans8097  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Даже не смотри сюда
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 197
Пользователь №: 30468
На форуме: 5 лет, 25 дней
Карма: 3




Цитата (S.Chushkin @ 4.10.2016 - 08:45)
Что в Вашей задаче есть "количество продуктов"?

Продукт это сущность таблицы product связанную по средствам category_to_product
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 783
Пользователь №: 36058
На форуме: 3 года, 11 месяцев, 12 дней
Карма: 40




Ещё раз: Что в Вашей задаче есть "количество продуктов"?

Можно сформулировать по другому: Что Вы подразумеваете/понимаете под понятием "количество продуктов"? (лучше, если "...понимает тот, кто поставил Вам эту задачу...")


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
lans8097  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Даже не смотри сюда
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 197
Пользователь №: 30468
На форуме: 5 лет, 25 дней
Карма: 3




Цитата (S.Chushkin @ 4.10.2016 - 14:46)
Ещё раз: Что в Вашей задаче есть "количество продуктов"?

Можно сформулировать по другому: Что Вы подразумеваете/понимаете под понятием "количество продуктов"? (лучше, если "...понимает тот, кто поставил Вам эту задачу...")

А вот тут хз что у них там в голове XD
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 783
Пользователь №: 36058
На форуме: 3 года, 11 месяцев, 12 дней
Карма: 40




Вы хотите посчитать число сферических коней в вакууме?
Забавно.


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 10 дней
Карма: 77




Предположу, что нужно найти категории к которым нет привязки товаров (допустим, которые можно удалить)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса