• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

  • Автор темы Автор темы 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
все выводит но не красиво!! ;)
 
Данная выборка будет выбирать каждую пару два раза в комбинациях 1-2 и 2-1.
Нужно каким-нибудь образом привязываться к номеру строки.
 
Предлагаю такое решение: (сразу скажу, что точный синтаксис файербёрда я не знаю, поэтому код пишу синтаксисом 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;
В данной выборке для текущей записи будет выбираться только та парная запись, которая стоит после текущей.

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы