Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2022, 19:39   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье Сравнить результаты двух запросов

Здравствуйте!
Есть два запроса к одной таблице, но к разным полям:
Код:
SELECT COUNT(*) FROM likes WHERE user_id IN (SELECT user_id FROM profiles as p WHERE gender='M')  
SELECT COUNT(*) FROM likes WHERE user_id IN (SELECT user_id FROM profiles as p WHERE gender='F')
Нужно получить значение gender того запроса, где COUNT вернет большие число.
Код:
SELECT gender FROM profiles WHERE  gender=??
Подскажите, пожалуйста, как это сделать с помощь вложенного запроса?
Женя32 вне форума Ответить с цитированием
Старый 23.04.2022, 22:20   #2
Agency
Пользователь
 
Регистрация: 07.10.2017
Сообщений: 99
По умолчанию

структура таблицы какая? Можно увидеть?
Agency вне форума Ответить с цитированием
Старый 24.04.2022, 10:38   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Код:
select top 1 gender
from ( -- первый ваш запрос с небольшой добавкой
          select 'M' gender, count(*) q from ... gender ='M' 
  union -- второй ваш запрос с аналогичной добавкой
          select 'F' gender, count(*) from .... gender='F'
        ) qfm 
order by q desc
Код:
select top 1 gender
from ( select gender, count(*)
          from profiles 
          inner join likes on likes.user_id =profiles.user_id
          where gender='M'
  union select gender, count(*)
          from profiles 
          inner join likes on likes.user_id =profiles.user_id
          where gender='F'
        ) qfm
order by gender desc
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 24.04.2022 в 10:46.
evg_m вне форума Ответить с цитированием
Старый 24.04.2022, 19:11   #4
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Подскажите еще, пожалуйста, как можно сравнить между собой эти два запроса?
Женя32 вне форума Ответить с цитированием
Старый 25.04.2022, 09:14   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
сравнить между собой эти два запроса
исходные(твои приведенные в первом сообщении) сначала объединяются в один(union) а затем упорядочиваются (==сравниваются) в указанном порядке (order by ...desc)
и из них выбирается лучший (top 1)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 26.04.2022, 11:04   #6
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Вот так делаю:
Код:
IF SELECT COUNT(*) FROM likes WHERE user_id IN (SELECT user_id FROM profiles as p WHERE gender='M') >  
SELECT COUNT(*) FROM likes WHERE user_id IN (SELECT user_id FROM profiles as p WHERE gender='F')
THEN
  SELECT 'больше поставил лайков мужчины'
END IF;
Выходит ошибка:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF SELECT COUNT(*) FROM likes WHERE user_id IN (SELECT user_id FROM profiles as ' at line 1
Мне нужен определить пол людей, который больше ставит лайков.
Женя32 вне форума Ответить с цитированием
Старый 03.05.2022, 10:07   #7
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 484
По умолчанию

Женя32, зачем сравнивать на уровне SQL?
Код:
SELECT ps.gender, COUNT(*) as `count`
  FROM `likes` AS ls
  JOIN `profiles` AS ps ON ps.user_id = ls.user_id
  GROUP BY ps.gender
  ORDER BY `count` DESC
Если надо получить только большее, просто добавь к этому запросу LIMIT 1
Valick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как и в чём написать программу .exe которая будет при вводе двух значений в двух разных полях ввода сравнить с библиотекой Александр Куба Помощь студентам 13 12.02.2016 11:00
Объединение двух запросов Xakand_2009 БД в Delphi 4 10.07.2012 15:05
Результаты запросов отображаются во всех DBGrid`ах Dozent Общие вопросы Delphi 4 24.04.2012 09:04
сложение двух запросов. tema654 Microsoft Office Access 2 09.01.2012 23:09
Связка двух запросов shefus SQL, базы данных 1 11.11.2010 19:56