Изучение способов создания вложенных динамических запросов

Страницы работы

Содержание работы

Ермаков И.В. ЭМ-42

лабораторная работа №21


ВЛОЖЕННЫЕ ПОДЗАПРОСЫ

Цель работы. Изучить способы создания вложенных динамических запросов

Индивидуальное задание:

Реализовать выполнение двух различных запросов SELECT с вложенными подзапросами. В одном из запросов использовать ‘=’. Один из запросов должен быть коррелированным.


Экранная форма программы:


Исходный код программы:

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender) {

            Query2->Active=false;

            Query2->Close();

            Query2->SQL->Clear();

                        Query2->SQL->Add("SELECT Id, Addr, Name, Year_*4");

            Query2->SQL->Add("FROM DB1");

            Query2->SQL->Add("WHERE Id>1 AND DB1.Name IN ('Кравцов Пётр','Ермаков Игорь', 'Иванютенко Юрий Батькович')");

            Query2->SQL->Add("ORDER BY DB1.Name DESC");

            Query2->Open();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn2Click(TObject *Sender)

{

        Query2->Active=false;

        Query2->Close();

        Query2->SQL->Clear();

        Query2->SQL->Add("SELECT * ");

        Query2->SQL->Add("FROM DB2");

        Query2->SQL->Add("WHERE Id > 0 AND Fam LIKE '%d%'");

        Query2->SQL->Add("ORDER BY Type ASC");

        Query2->Open();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn3Click(TObject *Sender)

{

 Query2->Active=false;

        Query2->Close();

        Query2->SQL->Clear();

        Query2->SQL->Add("SELECT Id, Addr ");

        Query2->SQL->Add("FROM DB1");

        Query2->SQL->Add("WHERE Id > 0 AND Klass LIKE ('%a%')");

        Query2->SQL->Add("ORDER BY Id DESC");

        Query2->Open();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn4Click(TObject *Sender)

{

        Query2->Active=false;

        Query2->Close();

        Query2->SQL->Clear();

        AnsiString Str = "";

                   Str   =      "SELECT Addr, Klass ";

                   Str  +=      "FROM DB1 ";

                   Str  +=      "WHERE Id <> 5 ";

                   Str  +=      "ORDER BY Klass ASC";

        Query2->SQL->Add(Str);

        Query2->Open();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn5Click(TObject *Sender)

{

        Query2->Active=false;

            Query2->Close();

            Query2->SQL->Clear();

            AnsiString Str5 = "";

            Str5   =      "SELECT Klass, SUM(Year_) ";

            Str5  +=      "FROM DB1 ";

            Str5  +=      "GROUP BY Klass";

            Query2->SQL->Add(Str5);

            Query2->Open();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn6Click(TObject *Sender)

{

            Query2->Active=false;

            Query2->Close();

            Query2->SQL->Clear();

            AnsiString Str6 = "";

            Str6   =      "SELECT *";

            Str6  +=      "FROM DB1, DB2 ";

            Str6  +=      "WHERE DB1.Id = DB2.Id";

            Query2->SQL->Add(Str6);

            Query2->Open();

}

//---------------------------------------------------------------------------

/*

void __fastcall TForm1::BitBtn7Click(TObject *Sender)

{

        Query2->Active=false;

        Query2->Close();

        Query2->SQL->Clear();

        AnsiString Str = "";

                        Str   =      "SELECT Addr, Klass ";

                        Str  +=      "FROM DB1 cpDB1";

                        Str  +=      "WHERE Id IN ";

                        Str  +=      "(SELECT DB2.Type, DB2.ID FROM DB2 WHERE cpDB1.Klass = '11')";

                                                  //Str  +=      "ORDER BY Klass ASC";

        Query2->SQL->Add(Str);

        Query2->Open();

}

*/

void __fastcall TForm1::BitBtn7Click(TObject *Sender)

{

     Query2->Active=false;

     Query2->Close();

     Query2->SQL->Clear();

     AnsiString Str7 = "";

     Str7   =      "SELECT * ";

     Str7  +=      "FROM DB1 ";

     Str7  +=      "WHERE DB1.ID =:id";

                                        //AnsiString()

     Query2->SQL->Add(Str7);

     //Query2->Params->Items[0]->AsInteger=StrToInt(Edit1->Text);

     Query2->Open();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn8Click(TObject *Sender)

{

     Query2->Active=false;

     Query2->Close();

     Query2->SQL->Clear();

     AnsiString Str7 = "";

     Str7   =      "SELECT * ";

     Str7  +=      "FROM DB1 ";

     Str7  +=      "WHERE DB1.Klass LIKE :klasss";

                                        //AnsiString()

     Query2->SQL->Add(Str7);

     Query2->Params->Items[0]->AsString=AnsiString("%"+Edit1->Text+"%");

     Query2->Open();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn9Click(TObject *Sender)

{

     Query2->Active=false;

     Query2->Close();

     Query2->SQL->Clear();

     AnsiString Str7 = "";

     Str7   =      "SELECT * ";

     Str7  +=      "FROM DB1 copy ";

     Str7  +=      "WHERE DB1.ID = (";

     Str7  +=      "SELECT MAX(ID)";

     Str7  +=      "FROM DB1)";

                                        //AnsiString()

     Query2->SQL->Add(Str7);

//     Query2->Params->Items[0]->AsString=AnsiString("%"+Edit1->Text+"%");

     Query2->Open();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn10Click(TObject *Sender)

{

     Query2->Active=false;

     Query2->Close();

     Query2->SQL->Clear();

     AnsiString Str7 = "";

     Str7   =      "SELECT * ";

     Str7  +=      "FROM DB1 copy ";

     Str7  +=      "WHERE copy.Id IN ";

     Str7  +=      "( SELECT copy2.Id ";

     Str7  +=      "FROM DB1 copy2 WHERE copy.Klass = copy2.Klass)";

     Query2->SQL->Add(Str7);

     Query2->Open();

}

//---------------------------------------------------------------------------

Вывод: Изучил вложенные подзапросы SQL

Похожие материалы

Информация о работе