Sqlde Selectte kolon olarak select kullanma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
neu84
Üye
Mesajlar: 307
Kayıt: 06 Oca 2011 11:27

Sqlde Selectte kolon olarak select kullanma

Mesaj gönderen neu84 »

selam arkadaşlar, bi select sorgusunda sütün olarak yine select kullanmam gerekiyor,

Kod: Tümünü seç

SELECT (SELECT 'SELAM') AS SLM,(SELECT 'NABER') AS HALHATIR
bu kod SELAM NABER diye sonuç dönderiyor 2 sütun halinde.
ancak nolmalde yazdıgım sorgudan birden fazla kolon dönüyor, bu nedenle aşagıdaki gibi bişey denedim oluyo mu diye, ama hata mesajı çıkıyor. Existsle işim yokki niye böyle hata veriyo.

Kod: Tümünü seç

SELECT (SELECT 'SELAM','MERHABA') AS SLM,(SELECT 'NABER') AS HALHATIR
Msg 116, Level 16, State 1, Line 1
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Sqlde Selectte kolon olarak select kullanma

Mesaj gönderen Lord_Ares »

valla tam ne demek istedini anlamdım ama, sanırım sorgus sırasında tablo adı, alan seçtirme ile ilgili. kendi yazdığım bir kodu gönderiyorum.
Belki işine yarar. daha açıklayacı yazarsan yardımcı olmaya çalışırız. aşağıdaki kod herhangi bir query bileşeni kullanmadan table da arama yapmakta kullanıyorum. ( aynı kayıt sorgusu adlı fonksiyonu incelersen belki yardımcı olabilir.)

Fonksiyonum şu şekilde



function TForm1.EXEKLASOR: string;
begin
Result := ExtractFilePath(Application.ExeName);
if Result[Length(Result)] <> '\' then
Result := Result + '\';
end;



function TForm1.Ayni_Kayit_Sorgusu(Data_Adi, AlanAdi, Kayitli_Bilgi, Aranan:String;Islem_Durumu:Integer):Boolean ;
var
Durum:boolean;
Sorgu:TQuery;
begin
Sorgu:=TQuery.Create(Self);
Durum:=true;

Sorgu.DatabaseName:=Form1.EXEKLASOR+'data';
if Aranan<>'' then begin
Sorgu.SQL.Clear;
Sorgu.SQL.Add('Select '+AlanAdi+' FROM '+Data_Adi+' WHERE '+AlanAdi+' = '+QuotedStr(Aranan));
Sorgu.OPEN;
Sorgu.FieldDefs.Update;


if Sorgu.FieldByName(AlanAdi).AsString=Aranan then Durum:=True else Durum:=False;
{1: if Kayitli_Bilgi<>Aranan then begin
if Sorgu.FieldByName(AlanAdi).AsString=Aranan then Durum:=True else Durum:=False;
end else Durum:=false;
}
Sorgu.CLOSE;
Result:=Durum ;
end else Result:=Durum;
Sorgu.Free;
end;

kullanımı şu şekilde

procedure TForm1.Button1Click(Sender: TObject);
var
mesaj:string;
begin
if Ayni_Kayit_Sorgusu('toptancilar','Firmadi',Table1Firmadi.AsString, Edit1.Text,StrToInt(Edit2.Text) )=True then begin

mesaj:=mesaj+#13+'MALZEME ADI Kullanılmaktadır...'+'('+Edit1.Text+')';
ShowMessage(mesaj);
end;

end;
cagatay77
Üye
Mesajlar: 37
Kayıt: 31 Eki 2003 12:34

Re: Sqlde Selectte kolon olarak select kullanma

Mesaj gönderen cagatay77 »

neu84 yazdı:selam arkadaşlar, bi select sorgusunda sütün olarak yine select kullanmam gerekiyor,

Kod: Tümünü seç

SELECT (SELECT 'SELAM') AS SLM,(SELECT 'NABER') AS HALHATIR
bu kod SELAM NABER diye sonuç dönderiyor 2 sütun halinde.
ancak nolmalde yazdıgım sorgudan birden fazla kolon dönüyor, bu nedenle aşagıdaki gibi bişey denedim oluyo mu diye, ama hata mesajı çıkıyor. Existsle işim yokki niye böyle hata veriyo.

Kod: Tümünü seç

SELECT (SELECT 'SELAM','MERHABA') AS SLM,(SELECT 'NABER') AS HALHATIR
Msg 116, Level 16, State 1, Line 1
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
Altsorgu içerisinde birden fazla sütun seçemezsin. Ayrıca altsorgudaki alandan dönen değer birden fazla olamaz. Aksi durumlarda join ile birleştirerek ihtiyacın olan alanları kullanabilirsin.
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Sqlde Selectte kolon olarak select kullanma

Mesaj gönderen esistem »

merhaba;

Kod: Tümünü seç

SELECT (SELECT 'SELAM','MERHABA') AS SLM,(SELECT 'NABER') AS HALHATIR
bu kod SELAM NABER, MERHABA NABER diye 2 sonuç bekliyosun sanırım bundan,

Kod: Tümünü seç

SELECT (SELECT 'SELAM','MERHABA') AS SLM,(SELECT 'NABER','NABER') AS HALHATIR
şeklinde yazarsan sanırım istediğin sonucu hatasız alırsın. Ama işine yararmı bilemiyorum tabi.
Cevapla