Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
1

Помогите составить sql запрос

09.12.2008, 11:09. Показов 1779. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
вообщем есть такая таблица:
Код
field_1   field_2
1         a1
1         a2
1         a3
2         b1
2         b2
4         d1
4         d2
4         d3
4         d4
3         c1
3         c2
3         c3
3         c4
3         c5
3         c6
нужно одним запросом выбрать записи, чтоб в итоге получилось по две записи где field_1=1, field_1=2, field_1=3 и field_1=4. т.е. результат должен получиться такой:
Код
1         a1
1         a2
2         b1
2         b2
4         d1
4         d2
3         c1
3         c2
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2008, 11:09
Ответы с готовыми решениями:

Помогите составить SQL запрос. голову сломал уже((
таблица клиенты: поля: -Код клиента -Наименование клиента таблица счета: поля: -Код клиента...

Помогите составить запрос
Здравствуйте. Помогите пожалуйста составить единый запрос, если он конечно возможен. Есть...

Помогите составить запрос на mysql
Таблица users с полями id и username и таблица test с полями в числе прочих userid1 и userid2...

помогите составить запрос в mysql..
здравствуйте.. помогите пожалуйста с запросом в mysql нужно выбрать из таблицы все поля, данные в...

8
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
09.12.2008, 11:11 2
Код
SELECT DISTINCT FROM TableName
UNION AL
SELECT DISTINCT FROM TableName
0
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
09.12.2008, 13:36  [ТС] 3
пасиба

наверное я туплю, а как к результату добавить еще несколько полей? т.е. чтоб DISTINCT делался по полю field_1, но чтоб в результате еще было и поле field_2

зы: и есть подозрения что с этим запросом в результате данные будут одинаковые, т.е. типа этого:
1 a1
1 a1
2 b1
2 b1
0
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
09.12.2008, 15:05 4
невнимательно посмотрел на данные таблицы
Код
SELECT * FROM TableName WHERE field_2 = 'a1'
UNION AL
SELECT * FROM TableName WHERE field_2 = 'a2'
0
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
09.12.2008, 15:36  [ТС] 5
хм.. ну такой запрос можно ведь укоротить и до такого:
SELECT * FROM TableName WHERE field_2 IN ('a1', 'a2')

а дело в том, что я понятия не имею какие данные будут храниться в поле field_2. в поле field_1 будут числа... например, будет 1000 записей у которых field_1=1, 800 записей у которых field_1=2 и т.д. ... и вот из всех этих записей мне нужно выбрать две записи у которых field_1=1, две записи у которых field_1=2 и т.д.


по другому можно сделать типа такого:
PHP
1
2
3
4
for($i=1; $i<10; $i++) {
  $result = mysql_query('SELECT * FROM table WHERE field_1='.$i.' LIMIT 2');
  // выводим результат
}
но такой алгоритм получение данных какой-то нифига не оптимизированный, хотелось бы чтоб не приходилось делать несколько подобных запросов, а собрать нужную инфу из базы за один запрос

зы: вот такая вот задача
0
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
09.12.2008, 16:15 6
может как то расширить задачу?
не понятно что это такое и для чего надо, по какому принципу именно 2 записи с одним и тем же field_1 отбирать и при чем тут field_2 и на какой основе оно отбирается
0
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
09.12.2008, 17:03  [ТС] 7
вообщем есть таблица categoreis с такой структурой (в ней хранятся категории для новостей: Спорт, Наука и т.д.):
category - auto_increment
name - tinytext
тут кол-во записей всего штук 15...

есть таблица news где содержатся сами новости:
id_category - int
text - text
а тут кол-во записей будет сотни а то и тысячи...

нужно выбрать из news по две (можно и 4... и 6) последние новости для каждой категории... насчет того, что новости надо выдернуть последние, это фигня - с сортировкой я разберусь, главная задача в том, как выдернуть по две (например) новости для каждой категории... одним запросом, ну или двумя-тремя если так получиться, но никак не 15...

сейчас это реализованно так:
PHP
1
2
3
4
5
$category = mysql_result('SELECT * FROM categories');
while( $v = mysql_fetch_assoc($category) ) {
  $news = mysql_query('SELECT * FROM news WHERE id_category='.$v{'category'}.' LIMIT 6');
 // выводим новости
}
но такой подход как-то не очень нравиться
0
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
11.12.2008, 09:50 8
примерно такая схема:
Код
SELECT * FROM news WHERE id_category= 1 LIMIT 1
UNION ALL
SELECT * FROM news WHERE id_category NOT IN (1-й запрос)
UNION ALL
SELECT * FROM news WHERE id_category NOT IN (1-е 2 запроса)
и т.д.
1
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
11.12.2008, 12:07  [ТС] 9
сэнкс... ща бежать надо... попозже попробую помучиться с этим вариантом..
0
11.12.2008, 12:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2008, 12:07
Помогаю со студенческими работами здесь

Правильно составить sql запрос
Необходимо заменить \http: на http: проблема в символе \ Поправьте меня: UPDATE element SET name...

Составить sql запрос на выборку
Есть таблица с такими столбиками sale_id, sale_kod, sale_name, sale_prise, sale_date, sale_point...

Составить сложный SQL запрос
Всем привет. Возник вопрос, который уже битый час не могу решить. Нужно составить SQL-запрос,...

Нужно составить SQL запрос
1. Есть таблица pa_trans 2. В ней есть столбец с выводом status 3. У status по умолчанию стоит...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru