ВЛОЖЕННЫЕ ПОДЗАПРОСЫ
Цель работы. Изучить способы создания вложенных динамических запросов
Индивидуальное задание:
Реализовать выполнение двух различных запросов 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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.