Pages

Monday, March 24, 2025

Целосен SQL пример за спојување табели и комбинација на резултати

 

Целосен SQL пример за спојување табели и комбинација на резултати

Во овој пример, ќе креираме база на податоци за студентски систем каде што ќе користиме:

  • INNER JOIN за да ги поврземе студентите со нивните оценки и професори.

  • SELF JOIN за да ја прикажеме хиерархијата на вработени (менаџери и вработени).

  • UNION за да ги комбинираме студентите, професорите и администраторите во еден резултатен сет.

    1. Креирање на табели и внесување на податоци

    Прво, ги креираме потребните табели и внесуваме податоци.

    sql
    -- Креирање на табелата Студенти CREATE TABLE Студенти ( СтудентID INT PRIMARY KEY, Име VARCHAR(50), Презиме VARCHAR(50) ); -- Внесување на податоци во табелата Студенти INSERT INTO Студенти VALUES (1, 'Ана', 'Петровска'); INSERT INTO Студенти VALUES (2, 'Марко', 'Иванов'); INSERT INTO Студенти VALUES (3, 'Елена', 'Стојановска'); -- Креирање на табелата Оценки CREATE TABLE Оценки ( ОценкаID INT PRIMARY KEY, СтудентID INT, Предмет VARCHAR(50), Оцена INT, FOREIGN KEY (СтудентID) REFERENCES Студенти(СтудентID) ); -- Внесување на податоци во табелата Оценки INSERT INTO Оценки VALUES (1, 1, 'Математика', 9); INSERT INTO Оценки VALUES (2, 2, 'Физика', 8); INSERT INTO Оценки VALUES (3, 3, 'Хемија', 10); -- Креирање на табелата Професори CREATE TABLE Професори ( ПрофесорID INT PRIMARY KEY, Име VARCHAR(50), Презиме VARCHAR(50), Предмет VARCHAR(50) ); -- Внесување на податоци во табелата Професори INSERT INTO Професори VALUES (1, 'Иван', 'Трајков', 'Математика'); INSERT INTO Професори VALUES (2, 'Софија', 'Јовановска', 'Физика'); INSERT INTO Професори VALUES (3, 'Давид', 'Ристов', 'Хемија'); -- Креирање на табелата Вработени за SELF JOIN CREATE TABLE Вработени ( ВработенID INT PRIMARY KEY, Име VARCHAR(50), Презиме VARCHAR(50), МенаџерID INT NULL ); -- Внесување на податоци во табелата Вработени INSERT INTO Вработени VALUES (1, 'Никола', 'Симонов', NULL); INSERT INTO Вработени VALUES (2, 'Јована', 'Митревска', 1); INSERT INTO Вработени VALUES (3, 'Горан', 'Тодоров', 1); INSERT INTO Вработени VALUES (4, 'Кристина', 'Ангелова', 2); -- Креирање на табелата Администратори CREATE TABLE Администратори ( АдминистраторID INT PRIMARY KEY, Име VARCHAR(50), Презиме VARCHAR(50) ); -- Внесување на податоци во табелата Администратори INSERT INTO Администратори VALUES (1, 'Марија', 'Костова'); INSERT INTO Администратори VALUES (2, 'Дејан', 'Алексов');

    2. Спојување на повеќе табели (INNER JOIN)

    Сакаме да добиеме листа на студентите со нивните оценки и професорите што ги предаваат предметите.

    SELECT Студенти.Име AS Студент,
    Студенти.Презиме AS Презиме, Оценки.Предмет, Оценки.Оцена, Професори.Име AS Професор FROM Студенти INNER JOIN Оценки ON Студенти.СтудентID = Оценки.СтудентID INNER JOIN Професори ON Оценки.Предмет = Професори.Предмет;
  • 3. Спојување табела сама со себе (SELF JOIN)

    Сакаме да видиме кој на кого му е менаџер во табелата Вработени.

    SELECT e1.Име AS Вработен,
    e1.Презиме AS Презиме,
    e2.Име AS Менаџер
    FROM Вработени e1
    LEFT JOIN Вработени e2 ON e1.МенаџерID = e2.ВработенID;

    4.Комбинирање на повеќе множества на резултати (UNION)

    Сакаме да прикажеме заедничка листа на студенти, професори и администратори.

    sql
    SELECT Име, Презиме, 'Студент' AS Улога FROM Студенти UNION SELECT Име, Презиме, 'Професор' AS Улога FROM Професори UNION SELECT Име, Презиме, 'Администратор' AS Улога FROM Администратори;

    Заклучок

    INNER JOIN: Ги поврзува табелите Студенти, Оценки и Професори за да добиеме комплетни информации.
    SELF JOIN: Ја користиме за да видиме хиерархија во табелата Вработени.
    UNION: Ги комбинира студентите, професорите и администраторите во една заедничка листа.

Sunday, March 23, 2025

Креирање прашања со спојување на две или повеќе табели

 

Цели на лекцијата:

  • Разбирање на концептот на JOIN операции за спојување на податоци од повеќе табели.

  • Поставување прашања (SQL ) за спојување на две или повеќе табели.

  • Креирање прашања со спојување табела сама со себе (SELF JOIN).

  • Комбинирање множества на резултати со UNION оператор.


1. Спојување на две или повеќе табели – SQL JOIN

Во SQL, за да споиме податоци од две или повеќе табели, користиме JOIN операции.

Пример 1: INNER JOIN – Спојување на податоци од две табели

Сценарио: Имаме две табели – Студенти и Оценки. Сакаме да ги добиеме имињата на студентите и нивните оценки.

sql
SELECT Студенти.Име, Студенти.Презиме, Оценки.Предмет, Оценки.Оцена FROM Студенти INNER JOIN Оценки ON Студенти.СтудентID = Оценки.СтудентID;

Задача:

  • Изменете го упитот за да додадете уште една табела, на пример Професори, и да ги прикажете имињата на професорите што ги предаваат предметите.


2. Спојување табела сама со себе (SELF JOIN)

SELF JOIN се користи кога една табела содржи податоци што треба да се споредат меѓусебно.

Пример 2: SELF JOIN – Прикажување на менаџери и вработени

Имаме табела Вработени каде секој вработен има ID и ID на својот менаџер.

sql
SELECT e1.Име AS Вработен, e2.Име AS Менаџер FROM Вработени e1 JOIN Вработени e2 ON e1.МенаџерID = e2.ВработенID;

Задача:

  • Изменете го упитот така што ќе прикажува само вработените што имаат менаџер со одредено име.


3. Комбинирање на повеќе множества на резултати – UNION

Операторот UNION се користи за комбинирање резултати од два или повеќе SELECT упити, под услов броевите и типовите на колоните да се исти.

Пример 3: UNION – Комбинирање на студенти и професори

sql
SELECT Име, Презиме, 'Студент' AS Улога FROM Студенти UNION SELECT Име, Презиме, 'Професор' AS Улога FROM Професори;

Задача:

  • Изменете го упитот за да додадете уште една табела, на пример Администратори, и да ги прикажете сите корисници во училиштето.


Заклучок

  • JOIN операторите овозможуваат спојување на податоци од повеќе табели врз основа на заеднички колони.

  • SELF JOIN овозможува споредба на податоци во рамки на иста табела.

  • UNION ги комбинира резултатите од различни SELECT упити во еден заеднички излез.