Аватар для GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147

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

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

Студворк — интернет-сервис помощи студентам
вообщем есть такая таблица:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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. т.е. результат должен получиться такой:
Code
1
2
3
4
5
6
7
8
1         a1
1         a2
2         b1
2         b2
4         d1
4         d2
3         c1
3         c2
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.12.2008, 11:09
Ответы с готовыми решениями:

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

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

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

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

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

зы: и есть подозрения что с этим запросом в результате данные будут одинаковые, т.е. типа этого:
1 a1
1 a1
2 b1
2 b1
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
09.12.2008, 15:05
невнимательно посмотрел на данные таблицы
Code
1
2
3
SELECT * FROM TableName WHERE field_2 = 'a1'
UNION AL
SELECT * FROM TableName WHERE field_2 = 'a2'
0
 Аватар для GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
09.12.2008, 15:36  [ТС]
хм.. ну такой запрос можно ведь укоротить и до такого:
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
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
09.12.2008, 16:15
может как то расширить задачу?
не понятно что это такое и для чего надо, по какому принципу именно 2 записи с одним и тем же field_1 отбирать и при чем тут field_2 и на какой основе оно отбирается
0
 Аватар для GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
09.12.2008, 17:03  [ТС]
вообщем есть таблица 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
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
11.12.2008, 09:50
примерно такая схема:
Code
1
2
3
4
5
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 (12 запроса)
и т.д.
1
 Аватар для GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
11.12.2008, 12:07  [ТС]
сэнкс... ща бежать надо... попозже попробую помучиться с этим вариантом..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.12.2008, 12:07
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мысли в слух
kumehtar 07.11.2025
Заметил среди людей, что по-настоящему верная дружба бывает между теми, с кем нечего делить.
Новая зверюга
volvo 07.11.2025
Подарок на Хеллоуин, и теперь у нас кроме Tuxedo Cat есть еще и щенок далматинца: Хочу еще Симбу взять, очень нравится. . .
Инференс ML моделей в Java: TensorFlow, DL4J и DJL
Javaican 05.11.2025
Python захватил мир машинного обучения - это факт. Но когда дело доходит до продакшена, ситуация не так однозначна. Помню проект в крупном банке три года назад: команда data science натренировала. . .
Mapped types (отображённые типы) в TypeScript
Reangularity 03.11.2025
Mapped types работают как конвейер - берут существующую структуру и производят новую по заданным правилам. Меняют модификаторы свойств, трансформируют значения, фильтруют ключи. Один раз описал. . .
Адаптивная случайность в Unity: динамические вероятности для улучшения игрового дизайна
GameUnited 02.11.2025
Мой знакомый геймдизайнер потерял двадцать процентов активной аудитории за неделю. А виновником оказался обычный генератор псевдослучайных чисел. Казалось бы - добавил в карточную игру случайное. . .
Протоколы в Python
py-thonny 31.10.2025
Традиционная утиная типизация работает просто: попробовал вызвать метод, получилось - отлично, не получилось - упал с ошибкой в рантайме. Протоколы добавляют сюда проверку на этапе статического. . .
C++26: Read-copy-update (RCU)
bytestream 30.10.2025
Прошло почти двадцать лет с тех пор, как производители процессоров отказались от гонки мегагерц и перешли на многоядерность. И знаете что? Мы до сих пор спотыкаемся о те же грабли. Каждый раз, когда. . .
Изображения webp на старых x32 ОС Windows XP и Windows 7
Argus19 30.10.2025
Изображения webp на старых x32 ОС Windows XP и Windows 7 Чтобы решить задачу, использовал интернет: поисковики Google и Yandex, а также подсказки Deep Seek. Как оказалось, чтобы создать. . .
Passkey в ASP.NET Core identity
stackOverflow 29.10.2025
Пароли мертвы. Нет, серьезно - я повторяю это уже лет пять, но теперь впервые за это время чувствую, что это не просто красивые слова. В . NET 10 команда Microsoft внедрила поддержку Passkey прямо в. . .
Последние результаты исследования от команды MCM (октябрь 2025 г.)
Programma_Boinc 29.10.2025
Последние результаты исследования от команды MCM (октябрь 2025 г. ) Поскольку мы продолжаем изучать гены, которые играют ведущую роль в развитии рака, в рамках проекта "Картирование раковых. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru