SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.02.2017 16:51:08

Виктop
Участник
Зарегистрирован: 15.02.2017
Сообщений: 8

Не знаю как составить sql запрос

Всем доброго времени суток, есть вот такой запрос:

SELECT * FROM table WHERE fild = fild ORDER BY date ASC LIMIT 20

Он выбирает все поля таблицы имеющие одинаковое значение поля, потом выводит самые первые по дате, но не более 20.

Хотелось бы узнать как написать запрос который помимо всего посчитал бы количество совпадений значений поля, т.е общее количество полей с таким значением?

Так же хотелось бы понять как можно реализовать запрос так, что б он мог выводить не первые 20 совпадений, а например совпадения от 20 до 40?

Неактивен

 

#2 15.02.2017 18:34:23

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не знаю как составить sql запрос

1. в показанном варианте условие (fild = fild) выбирает всю таблицу

2. группировка и count(*)

3. limit 20,40

Неактивен

 

#3 15.02.2017 19:38:05

Виктop
Участник
Зарегистрирован: 15.02.2017
Сообщений: 8

Re: Не знаю как составить sql запрос

vasya написал:

1. в показанном варианте условие (fild = fild) выбирает всю таблицу

Спасибо, я знаю, этот запрос был копирован из php кода, в коде он выглядел "fild = '.$fild.'", знак "$" убрал т.к в sql его не должно быть

vasya написал:

3. limit 20,40

Тут тоже понял

vasya написал:

2. группировка и count(*)

А вот тут хотелось бы по подробнее, ибо вопрос задан в разделе "для начинающих"

Отредактированно Виктop (15.02.2017 19:39:07)

Неактивен

 

#4 15.02.2017 20:06:55

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не знаю как составить sql запрос

например,
select fild, count(*) from `table` where fild=.. group by fild

чтобы подробней ответить нужен пример с тестовыми данными, а то не очень понятно что нужно

и посмотрите http://sqlinfo.ru/articles/info/18.html

Неактивен

 

#5 15.02.2017 20:38:36

Виктop
Участник
Зарегистрирован: 15.02.2017
Сообщений: 8

Re: Не знаю как составить sql запрос

vasya написал:

например,
select fild, count(*) from `table` where fild=.. group by fild

Спасибо, но это не то

vasya написал:

и посмотрите http://sqlinfo.ru/articles/info/18.html

Спасибо, эта ссылка мне уже полезна, но подходит она другому случаю.

vasya написал:

чтобы подробней ответить нужен пример с тестовыми данными, а то не очень понятно что нужно

Попытаюсь описать словами, есть таблица с 4 полями, в ней есть два нужных для sql поля "group" и "date", нужно показать пользователю общее количество членов группы, и вывести на страницу список членов группы по двадцать в порядке вступления в группу.

На всякий случай перефразирую вопрос, нужно вытащить из таблицы 20 человек, у которых совпадает поле "group" и отсортировать их по дате, а так же показать общее число участников группы

Неактивен

 

#6 15.02.2017 21:31:41

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не знаю как составить sql запрос

SELECT t.*, (select count(*) from table WHERE fild = X) FROM table t WHERE fild = X ORDER BY date ASC LIMIT 20;

SELECT * FROM table t, (select count(*) from table WHERE fild = X) t1 WHERE fild = X ORDER BY date ASC LIMIT 20;

так?

Неактивен

 

#7 15.02.2017 22:37:15

Виктop
Участник
Зарегистрирован: 15.02.2017
Сообщений: 8

Re: Не знаю как составить sql запрос

В обоих случаях выдаёт синтаксическую ошибку, хотя возможно я не правильно подставляю свои названия...
Я понимаю что достал уже, но если не сложно, можно как нибудь прокомментировать что и откуда в этих запросах берётся?
Ещё я так понял в этих запросах создаётся какая то временная таблица?

Неактивен

 

#8 15.02.2017 23:36:55

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не знаю как составить sql запрос

сделайте пример тестовых данных на десяток строк в виде
create table ..
insert into ..
и какой результат должен быть на этих данных, тогда можно будет написать точный запрос.

Виктop написал:

Ещё я так понял в этих запросах создаётся какая то временная таблица?

во втором запросе в ходе выполнения результат подзапроса будет помещен во временную таблицу

Неактивен

 

#9 16.02.2017 03:13:45

Виктop
Участник
Зарегистрирован: 15.02.2017
Сообщений: 8

Re: Не знаю как составить sql запрос

Спасибо, понял в каком направлении копать, завтра буду разбираться

Неактивен

 

#10 16.02.2017 16:45:29

gotlib
Участник
Зарегистрирован: 29.09.2016
Сообщений: 12

Re: Не знаю как составить sql запрос

Автор , сделать пример тестовых данных можно здесь http://sqlfiddle.com/ . Там же можно будет сразу проверить работают ли запросы.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson