- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
В общем так, есть 2 таблицы, связаны по ключу 1 к М, индексу из первой таблицы соответствует множество записей второй таблицы, но в первой есть такие значения ключа, которым нет соответствия во второй
нужно одним запросом (потому что потом по нему иду циклом) выбрать все записи из первой, отсортировав по количеству записей с таким значением (uid) из второй
табл._1_____табл. 2
id__t________id__uid
1__a________1__1
2__a________2__1
3__a________3__2
пытаюсь так
SELECT a.id, a.t, count(b.id) as col
FROM a INNER JOIN b ON a.id=b.uid GROUP BY b.id ORDER BY col DESC LIMIT $start, 50
то есть хочу увидеть
1___a___2
2___a___0
3___a___0
проблема с ним в том, что возвращает только те значения, которые есть в обоих таблицах, а хотелось бы если во второй таблице нет таких (col=0), то они как пустые плелись в конце.
Пробовал различные сочетания join т.п. не выходит, прошу помощи у спецов по запросам.
Нужно использовать LEFT JOIN, для того он и предназначен.
Конкретно за mySQL не скажу, сейчас вот в MS Access сделал:
SELECT a.id, a.t, Count(b.id) as col
FROM a LEFT JOIN b ON a.id = b.uid
GROUP BY a.id, a.t
ORDER BY Count(b.id) DESC
всё равно у меня выводятся только записи из двух таблиц
Скиньте дамп таблиц на pavel{}rusedu.ru.
Без него трудно что либо советовать :)
Навскидку..
FROM a,b WHERE a.id = b.uid
GROUP BY a.id, a.t
ORDER BY Count(b.id) DESC
так попробуйте
то есть хочу увидеть
1___a___2
2___a___0 здесь наверно 1, 3__2
3___a___0
Shtogrin
Гениально! Я просто всегда с подозрением относился к вложенным запросам в mySQL, но время идет все улучшается...
p.s. Предыдущие запросы тоже не выдавали все записи