• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Простой запрос

  • Автор темы SeverBap
  • Дата начала
S

SeverBap

Есть таблица employee с столбцами hire_date, first_name, Last_name
нужно вывести пары по hire_date;
как это сделать я незнаю
работаю в firebird!!!!

Код:
Select first.hire_date, fin.hire_date, first.first_name,first.Last_name
from employee first, employee Fin
where first.hire_date=fin.hire_date and first.first_name<>Fin.first_name
все выводит но не красиво!! ;)
 
O

Over

Данная выборка будет выбирать каждую пару два раза в комбинациях 1-2 и 2-1.
Нужно каким-нибудь образом привязываться к номеру строки.
 
O

Over

Предлагаю такое решение: (сразу скажу, что точный синтаксис файербёрда я не знаю, поэтому код пишу синтаксисом ORACLE-а)

1. Создать таблицу (TMP_TABLE), которая будет содержать поля из employee и ещё одно доп. поле, например thisRecordNumber.
Перед каждой операцией выбора пар эту таблицу нужно будет очищать.
2. Выполнить приблизительно такой скриптик:
Код:
DECLARE counter integer;
begin
counter := 1;
FOR i in (SELECT * FROM employee)
loop
INSERT INTO TMP_TABLE
VALUES (i.first_name, i.last_name, i.hire_date, counter);
counter := counter + 1;	 
end loop;
end;
Мы копируем все записи во временную таблицу и при этом нумеруем их.

3. Делаем выборку пар из временной таблицы:
Код:
 SELECT one.LastName, one.FirstName, two.LastName, two.FirstName, one.hire_date
FROM TMP_TABLE one, TMP_TABLE two
WHERE one.hire_date = two.hire_date
AND one.thisRecordNum < two.thisRecordNum;
В данной выборке для текущей записи будет выбираться только та парная запись, которая стоит после текущей.

Вот такое решение.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!