Forum Webscript.Ru

Общие => Базы данных => Тема начата: Dart Sidius от 21 Июня 2005, 14:49:25

Название: SQL выборка
Отправлено: Dart Sidius от 21 Июня 2005, 14:49:25
ПОМОГИТЕ!...не могу перебороть такую вещь...
есть таблица например с двумя полями...такого вида

id|time
-------
10|4
33|5
32|7
55|9
1|10
52|12
52|14
66|16

....мне нужно например найти в ней поле с id 55 и все что оказалось ниже отсечь а остальное показать....можно ли это сделать с помошью только SELECT?
Название: SQL выборка
Отправлено: cr4ck3r от 21 Июня 2005, 15:30:50
В смысле ниже? Меньше 55? Тогда так:
SELECT * FROM table WHERE id>55; покажет все что больше 55.
Название: SQL выборка
Отправлено: Dart Sidius от 21 Июня 2005, 18:03:25
не...если бы все было так просто :)...допустим есть переменная $id=55...т.е. надо каким то образом сделать так чтобы вон в той таблице, что вверху, все что находится ниже этого значения!..т.е. надо сравнивать напрямую...а не > or <, то отсекается...в общем нашел он запись с этим ID и оставляется только это:
10|4
33|5
32|7
55|9
Название: SQL выборка
Отправлено: glebushka от 22 Июня 2005, 01:36:42
Dart Sidius,
1. причём здесь перл?
2. без условия ORDER BY всё что ты написал - бред
3. в каждом предложении должно быть подлежащее и сказуемое. Если не получается составить грамотно предложение, набирай в ворде - он подчёркивает.
4. из набора слов, которые ты написал понятно, что ORDER BY тебе поможет.
Название: SQL выборка
Отправлено: Dart Sidius от 22 Июня 2005, 02:28:55
Не поможет...раз не понимаешь то объсню для умников ещё раз:
1. Есть таблица id|time
-------
10|4
33|5
32|7
55|9
1|10
52|12
52|14
66|16

2. Есть переменная $ID=55
3. Нужно перейти по этой таблице на id=55 а потом с помощью LIMIT отрезать все что ниже id=55...т.е. оставить только
10|4
33|5
32|7
55|9

...у меня все это получается с помощью длинного метода...т.е. находим номер строки одним запросом...а вторым уже делаем все остальное...вот я и интересуюсь...можно ли с помощью одного запроса все это сделать?
Название: SQL выборка
Отправлено: hanslinger от 22 Июня 2005, 08:40:54
Цитировать
можно ли с помощью одного запроса все это сделать?

Можно. Если при составлении таблицы id будет выполнять ту функцию, которую должен, а не ту ерунду, которая у тебя.
Вот скажи, если у тебя этот твой $id=52, то тебе где надо отсечь?
И про ORDER BY почитай, не зря тебе говорят.

В таблице не бывает "выше и ниже" без условия. Видишь ли, это ты решил, что "ниже" - это если id, идущие после 55. Это бред. Всегда, если хочется говорить о "выше" и "ниже", надо говорить о сортировке по какому-то полю. Тебе надо добавить еще одно уникальное поле. Или этот "id" пересмотреть.
Название: SQL выборка
Отправлено: Dart Sidius от 22 Июня 2005, 11:18:10
ну блин...чё вы все усложняете...ладно вот в данном случает отсортировано по ORDER BY time
id|time
-------
10|4
33|5
32|7
55|9
1|10
52|12
53|14
66|16
....как теперь оставить только то что выше id=55
id|time
-------
10|4
33|5
32|7
55|9
Название: SQL выборка
Отправлено: Меняздесьдавнонет от 22 Июня 2005, 11:39:35
понятие "выше-ниже" без сортировки не имеет смысла.
равно как не имеет смысла заниматься программированием нашему дорогому предводителю ситхов.
Название: SQL выборка
Отправлено: commander от 22 Июня 2005, 12:55:27
SELECT id, time FROM table WHERE time=<(SELECT time FROM table WHERE id=55);
и не занимайся кроспостингом...
Название: SQL выборка
Отправлено: Dart Sidius от 22 Июня 2005, 14:34:07
commander: что-то не получается по твоему запросу...не может он так :(
Название: SQL выборка
Отправлено: hanslinger от 22 Июня 2005, 14:57:13
MySQL<4.1?
Название: SQL выборка
Отправлено: commander от 22 Июня 2005, 16:14:20
Dart Sidius
не поддерживаються подзапросы... это повод подумать о переходе на новую версию БД...