Abfrage gesucht [gelöst]

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
AlterMann
Beiträge: 238
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Abfrage gesucht [gelöst]

Beitrag von AlterMann »

Hallo Leute

Obgleich mir klar ist, daß es in diesem Forum nicht um SQL-Syntax an sich, sondern um die Verbindung zu lazarus geht, denke ich hier wird mir dennoch wer helfen können.

Ich verwende MySQL zwar als zentralen Datenspeicher für meine Pascalprojekte, bin aber alles andere als Firm mit diesem Zeug :oops:

Ich habe eine Tabelle mit (unter anderem) dem Feld nummer und erledigt.
nummer ist ein varchar(20), erledigt ein varchar(1) (und kann nur die Werte 'J' und 'N' annehmen.

nummern können einmal oder auch öfter vorkommen.

Ich suche eine Abfrage, die mir jede nummer (einmal) zurückliefert bei der alle Zeilen in erledigt 'J' stehen haben.

Ich finde einfach nicht die richtigen Worte um Google mein Problem schmackhaft zu machen. :P
Hoffe das ist für irgendjemanden verständlich ... :cry:

Danke für's Lesen
Christian
Zuletzt geändert von AlterMann am Sa 6. Jul 2013, 09:46, insgesamt 1-mal geändert.
Früher war alles besser. Und aus Holz!

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Abfrage gesucht

Beitrag von MmVisual »

EleLa - Elektronik Lagerverwaltung - www.elela.de

Eb
Lazarusforum e. V.
Beiträge: 240
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Re: Abfrage gesucht

Beitrag von Eb »

Wenn ich dich richtig versteht sollte die Abfrage bei den Folgenden Daten nur die Zahl 2 liefern:

CREATE TABLE `tabelle` (
`nummer` varchar(20) NOT NULL,
`erledigt` char(1) NOT NULL
)
ENGINE = MyISAM;


insert into tabelle values('1','J');
insert into tabelle values('1','J');
insert into tabelle values('1','N');
insert into tabelle values('2','J');
insert into tabelle values('2','J');
insert into tabelle values('2','J');
insert into tabelle values('3','N');
insert into tabelle values('3','N');
insert into tabelle values('3','N');

Die Abfrage könnte beispielsweise so aussehen:

SELECT distinct nummer FROM tabelle where erledigt = 'J'
and nummer not in (select nummer from tabelle where erledigt = 'N')

Eb

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Abfrage gesucht

Beitrag von hde »

Alles OK,
nur, warum wird nummer als varchar(20) definiert? (order by) :wink:

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Abfrage gesucht

Beitrag von Christian »

Rechnungs und Artikelnummern enthalten sehr oft Alphunumerische Prefixe, werden aber trotzdem Nummer genannt.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

AlterMann
Beiträge: 238
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Abfrage gesucht

Beitrag von AlterMann »

Eb hat geschrieben:Wenn ich dich richtig versteht sollte die Abfrage bei den Folgenden Daten nur die Zahl 2 liefern:


SELECT distinct nummer FROM tabelle where erledigt = 'J'
and nummer not in (select nummer from tabelle where erledigt = 'N')

Eb
Du hast die Problemstellung richtig erkannt, und Deine Abfrage funktioniert hervorragend.

Danke schön.

Es ist wie Christian vermutet: Heißt zwar Nummer ist aber (auch) Alphanumerisch.
Früher war alles besser. Und aus Holz!

Antworten