Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 5

Запрос к 3 таблицам,(сравнение с одной) подсчет строк в другой,(вывод макс значений),и пункта из третьей

15.09.2010, 11:31. Показов 3254. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть 3 таблицы
1.
ad_as
---------------------------------------------------------
-| id | userid|----
-|----|-------|-----
-|-1--|--62--|----
-|-2--|--62--|---
-|-3--|--62--|---
-|-4--|--62--|---
-|-5--|--63--|---
-|-6--|--63--|---
-|-7--|--63--|---
-|-8--|--208-|---

--------------------------------------------------------------
2 _us

-| id | name|----
-|------|--------|-----
-|-62--|--Alek--|----
-|-63--|--Blek--|---
-|-64--|--Hat--|---
-|-65--|--Nat--|---
-|-67--|--Bat--|---
-|-68--|--Kat--|---
---------------------------------------------------------------
3 ad_pr

-| usid|
-|-----|
-|-62-|
-|-63-|
-|-67-|
-|-4528-|
-----------------------------------

Как сравнить наличие usid из 1(табл) с usid из 3(табл) , потом посчитать количество строк ( id ) на каждый usid в 1 таблице(соответственно на те которые есть в 3 табл) и получить 5 максимальных значений в порядке убывания из 1 табл , а из 2 таблицы получить name в соответствии с id . ухх словами сложно это написать))
Пробывал так
PHP
1
2
3
4
5
6
" SELECT u.name, COUNT(a.id) AS total_as ".
                     " FROM #__ad_as AS a ".
                     " JOIN #__us AS u ".
                     " LEFT JOIN #__ad_pr AS p ON p.usid=a.usid".
                     " WHERE a.usid=u.id ".
                     " GROUP BY u.name ORDER BY total_as DESC LIMIT 5"
Но в итоге выдает только одно макс значение (по сумме id )и name ему соответствующее.

Вот как то так. Мозг почти лопнул))

СПАСИБО, ВСЕМ откликнувшимся.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.09.2010, 11:31
Ответы с готовыми решениями:

Подсчёт и сравнение значений столбца в одной таблице
Помогите пожалуйста с заданием: написать запрос на поиск продавцов, которые имеют покупателей только из одного города. То, что я...

Сравнение строк одной БД с другой либо как избавится от ненужных строк
Доброе время суток! Проблема состоит в следующем. Есть корпоративная БД (то есть структуру придумывал не я) в ней есть две таблицы P с...

SQL. Вывод значений из таблицы и подсчет количества этих значений в другой таблице
Задание звучит так: Для таблиц user и phones, где соответствие записей определяется равенством user.id = phones.user_id привести 2 разных...

9
 Аватар для GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
15.09.2010, 12:22
пропробуй такое:
SQL
1
2
3
4
SELECT t2.name, COUNT(t1.userid) AS total_as
    FROM ad_as AS t1 LEFT JOIN _us AS t2 ON (t1.userid=t2.id)
    GROUP BY t1.userid HAVING t1.userid IN (SELECT DISTINCT usid FROM ad_pr)
    ORDER BY total_as DESC LIMIT 5
0
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 5
15.09.2010, 13:41  [ТС]
Цитата Сообщение от GalaX Посмотреть сообщение
пропробуй такое:
SQL
1
2
3
4
SELECT t2.name, COUNT(t1.userid) AS total_as
    FROM ad_as AS t1 LEFT JOIN _us AS t2 ON (t1.userid=t2.id)
    GROUP BY t1.userid HAVING t1.userid IN (SELECT DISTINCT usid FROM ad_pr)
    ORDER BY total_as DESC LIMIT 5
попробывал

ругается на 1054 ошибку Unknown column t1.userid IN/ALL и т д
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
15.09.2010, 15:02
Цитата Сообщение от GalaX Посмотреть сообщение
SQL
1
HAVING t1.userid IN (SELECT DISTINCT usid FROM ad_pr)
В having разрешается оперировать расчитанными при группировке агрегатами, а тут обычная фильтрация, которой самое место в where
p.s. суть не смотрел, только по синтаксису приметил
1
 Аватар для GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
15.09.2010, 15:58
Цитата Сообщение от arni Посмотреть сообщение
В having разрешается оперировать расчитанными при группировке агрегатами, а тут обычная фильтрация, которой самое место в where
точно, тогда вроде так должно быть:
SQL
1
2
3
4
5
SELECT t2.name, COUNT(t1.userid) AS total_as
        FROM ad_as AS t1 LEFT JOIN _us AS t2 ON (t1.userid=t2.id)
        WHERE t1.userid IN (SELECT DISTINCT usid FROM ad_pr)
        GROUP BY t1.userid
        ORDER BY total_as DESC LIMIT 5
Цитата Сообщение от AlexSims Посмотреть сообщение
ругается на 1054 ошибку Unknown column t1.userid IN/ALL и т д
может у тебя в таблице нет поля с таким названием?
0
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 5
15.09.2010, 16:08  [ТС]
Цитата Сообщение от GalaX Посмотреть сообщение
точно, тогда вроде так должно быть:
SQL
1
2
3
4
5
SELECT t2.name, COUNT(t1.userid) AS total_as
        FROM ad_as AS t1 LEFT JOIN _us AS t2 ON (t1.userid=t2.id)
        WHERE t1.userid IN (SELECT DISTINCT usid FROM ad_pr)
        GROUP BY t1.userid
        ORDER BY total_as DESC LIMIT 5

может у тебя в таблице нет поля с таким названием?
нет все поля на месте.
щас попробую последний вариант

Добавлено через 5 минут
Вообще работает . но LIMIT не пашет и выводит одну строку со значениями( самую большую)
0
 Аватар для GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
15.09.2010, 16:33
Цитата Сообщение от AlexSims Посмотреть сообщение
но LIMIT не пашет и выводит одну строку со значениями( самую большую)
а так?:
SQL
1
2
3
4
5
SELECT t.name, t.total_as FROM (SELECT t2.name, COUNT(t1.userid) AS total_as
        FROM ad_as AS t1 LEFT JOIN _us AS t2 ON (t1.userid=t2.id)
        WHERE t1.userid IN (SELECT DISTINCT usid FROM ad_pr)
        GROUP BY t1.userid
        ORDER BY total_as DESC) AS t LIMIT 5
0
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 5
15.09.2010, 17:07  [ТС]
Цитата Сообщение от GalaX Посмотреть сообщение
а так?:
SQL
1
2
3
4
5
SELECT t.name, t.total_as FROM (SELECT t2.name, COUNT(t1.userid) AS total_as
        FROM ad_as AS t1 LEFT JOIN _us AS t2 ON (t1.userid=t2.id)
        WHERE t1.userid IN (SELECT DISTINCT usid FROM ad_pr)
        GROUP BY t1.userid
        ORDER BY total_as DESC) AS t LIMIT 5
((((( тоже одну строчку выдает видимо с LIMIT тут не пройдет
0
 Аватар для GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
15.09.2010, 17:52
вариант с лимитом из 7-го поста нормально работает

Добавлено через 1 минуту
если хочешь, то можешь кинуть CREATE запросы и INSERT-ы которые ты делаешь
а я у себя проверю че за фигня происходит
1
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 5
15.09.2010, 18:26  [ТС]
Цитата Сообщение от GalaX Посмотреть сообщение
вариант с лимитом из 7-го поста нормально работает

Добавлено через 1 минуту
если хочешь, то можешь кинуть CREATE запросы и INSERT-ы которые ты делаешь
а я у себя проверю че за фигня происходит
я уже на готовом сайте делаю (joomla 1.5 ) модуль хотел сделать который выводил бы 5 пользов с максимальным количеством объявлений.

Добавлено через 22 минуты
Спасибо буду дальше мучать возможно глюк в функции которая все обрабатывает

Добавлено через 6 минут
Все верно 7вариант заработал вдруг раньше ошибку на массив выдавал а теперь пашет чудеса какие то .

Спасибо огромное что возился.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.09.2010, 18:26
Помогаю со студенческими работами здесь

Запрос на сравнение значений 2х столбцов в одной таблице
Помогите создать запрос в MySql. Есть таблица со столбцами id1 и id2. Нужно вывести все строки в которых значение id2 не присутствует в...

DataGridView. Подсчет всех значений в одной колонке.Вывод в Текст бокс
Всем доброго времени суток. В общем есть главная форма и еще 2 второстепенные. Из второстепенных заполняется 1 БД (Access) с 4...

Запрос к таблицам: сравнение
Здравствуйте. Возникла необходимость сравнить 2 таблицы chars и text. В них есть колонки с одинаковыми данными (idet и idt) id-номера. ...

Сравнение двух столбцов Excel и вывод на другой лист общих значений
Доброго времени суток. Встала острая необходимость в следующем: на листе "Замечания" есть таблица с данными осмотра...

Вывод списка значений в ячейку одной таблицы из другой
Друзья, Весь день пытаюсь разобраться как добиться желаемого. Есть некоторый опыт в VBA на Excel, но только начинаю познавать Access....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru