Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Выборка mysql

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
myocean
Отправлено: 11 Декабря, 2011 - 15:44:53
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Здравствуйте!

Подскажите, столкнулся со следующей проблемой...
Есть база mysql содержащая строки приблизительно следующего содержания

name | solution
star blablabla1
star blablabla2
cosmo blablabla1
cosmo blablabla2
cosmo blablabla3
...
space blablabla1
space blablabla2


Как мне выбрать 5 уникальных записей по name, (но содержащих все строки где встречаются эти уникальные имена), затем 5 следующих и т.п.

иными словами, как использовать limit но не по строкам а по уникальным именам?
и вообще возможно ли это?


Спасибо
 
 Top
Panoptik
Отправлено: 11 Декабря, 2011 - 15:48:20
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT `name` FROM `table` LIMIT 5


-----
Just do it
 
 Top
myocean
Отправлено: 11 Декабря, 2011 - 15:56:08
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




А если есть еще поля... то нужно делать второй запрос по найденым уникальным именам?
 
 Top
etoYA
Отправлено: 11 Декабря, 2011 - 16:05:48
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT  `поле`,`поле` FROM `таблица` LIMIT 5
 
 Top
Panoptik
Отправлено: 11 Декабря, 2011 - 16:20:58
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




myocean пишет:

А если есть еще поля... то нужно делать второй запрос по найденым уникальным именам?

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


-----
Just do it
 
 Top
myocean
Отправлено: 11 Декабря, 2011 - 16:51:03
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Попробую еще раз...
Как одним запросом получить данные из таблицы...

name solution description и тд.

ivan sol1 des1 ...
ivan sol2 des2 ...
ivan sol3 des1 ...
ivan sol4 des2 ...
max sol1 des1 ...
max sol2 des1 ...
max sol3 des1 ...
max sol5 des1 ...
sava sol1 des1 ...
sava sol2 des2 ...
sava sol3 des2 ...
sava sol4 des2 ...


с лимитом, скажем в два уникальных name


то есть нужно LIMIT 2
при DISTINCT name

и получить на выходе следующий массив:


ivan sol1 des1 ...
ivan sol2 des2 ...
ivan sol3 des1 ...
ivan sol4 des2 ...
max sol1 des1 ...
max sol2 des1 ...
max sol3 des1 ...
max sol5 des1 ...

(Отредактировано автором: 11 Декабря, 2011 - 18:13:11)

 
 Top
Данил_123
Отправлено: 11 Декабря, 2011 - 18:13:57
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




SELECT * FROM table

(Отредактировано автором: 11 Декабря, 2011 - 18:15:34)



-----
http://mysitecost.ru
 
 Top
myocean
Отправлено: 11 Декабря, 2011 - 18:17:20
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Данил_123 пишет:
SELECT * FROM table


При * он выведет всю таблицу ;(

Как ограничить вывод лимитом?

(Отредактировано автором: 11 Декабря, 2011 - 18:18:29)

 
 Top
Данил_123
Отправлено: 11 Декабря, 2011 - 18:23:20
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




SELECT * FROM table WHERE name = unique LIMIT 2 вроде так.. Какие имена уникальныи?


-----
http://mysitecost.ru
 
 Top
Champion Супермодератор
Отправлено: 11 Декабря, 2011 - 18:36:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *
  2. FROM tbl
  3. WHERE name IN (
  4.   SELECT name
  5.   FROM tbl
  6.   GROUP BY name
  7.   ORDER BY name
  8.   LIMIT 495, 5
  9. )
  10.  

но вообще это не будет быстро работать. Чтоб работало быстро, надо поделать всякие извращения типа периодического перенумеровывания таблицы или еще чего-нибудь
 
 Top
myocean
Отправлено: 11 Декабря, 2011 - 18:43:10
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Спасибо, но пишет This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

...

В принципе можно в два запроса...
Сначала собрать все уникальные имена с лимитом, а вторым вывести все WHERE IN по этим именам ....
 
 Top
Champion Супермодератор
Отправлено: 11 Декабря, 2011 - 18:47:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Ну да, тогда в 2 запроса
 
 Top
myocean
Отправлено: 11 Декабря, 2011 - 18:49:05
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Еще раз спасибо!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB