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: Ги комбинира студентите, професорите и администраторите во една заедничка листа.

No comments:

Post a Comment