Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem bei SELCT-Statement für ListView mit Livebinding (https://www.delphipraxis.net/186428-problem-bei-selct-statement-fuer-listview-mit-livebinding.html)

Darlo 2. Sep 2015 11:51

Datenbank: SQLITE • Version: 3 • Zugriff über: UniDac

Problem bei SELCT-Statement für ListView mit Livebinding
 
Hallo zusammen,

ich bekomme gerade eine SELECT-Anweisung nicht auf die Reihe.

Gegeben ist eine Tabelle "personen"

dsidpidpersonenNrvornachname
111Adam
122Eva
231Max
341Klaus
451Maria
462Bernd

Jetzt möchte ich in einer ListView pro DSID-Gruppe ein ListviewItem haben. Wobei der Namen der 1 Person der Text und der Namen der 2. Person das Detail der Listview ist.

Folgendes SELECT führe ich aus:
Code:
SELECT
DISTINCT(a.dsid),a.pid, a.vorname, a.nachname, a.vornachname AS NAME1, a.isHistorie,
b.vornachname AS NAME2, b.personen_nr
FROM personen as a
LEFT JOIN personen as b
on a.dsid = b.dsid
WHERE (a.personen_nr = 1) AND (b.personen_nr = 2)
ORDER BY a.nachname
Das funktioniert für alle Datensätze die eine 2 Person enthalten. Was muss ich denn machen damit wenn keine 2. Person verfügbar ist das Feld NAME2 einfach leer ist?

Vielen lieben Dank schonmal für die Antworten.

mkinzler 2. Sep 2015 11:58

AW: Problem bei SELCT-Statement für ListView mit Livebinding
 
Mach einen OUTER Join und ersetze dann NULL durch ''

baumina 2. Sep 2015 12:07

AW: Problem bei SELCT-Statement für ListView mit Livebinding
 
Hier mein Vorschlag:

SQL-Code:
SELECT
 a.dsid,a.pid, a.vorname, a.nachname, a.vornachname AS NAME1, a.isHistorie,
 b.vornachname AS NAME2, b.personen_nr
 FROM personen as a
 LEFT JOIN personen as b
 on a.dsid = b.dsid
 AND b.personen_nr = 2
 WHERE a.personen_nr = 1
 ORDER BY a.nachname

frankyboy1974 2. Sep 2015 12:11

AW: Problem bei SELCT-Statement für ListView mit Livebinding
 
hallo,

also ich würd jetzt auch mal auf einen Outer-Join tippen, aber was ich bei solchen Anfragen immer nicht verstehe, warum muss man immer alles über SQL programmieren (muss jede fachliche Anforderung, genau in einem SQL-Statement abgedeckt werden können?). Wenn du dir stattdessen mit
Code:
select * from personen where .... order by dsid
einfach alle selektierst und dann den Gruppenwechsel in Delphi selbst durchführst, solltest du zum selben Ziel kommen.

mfg

baumina 2. Sep 2015 12:23

AW: Problem bei SELCT-Statement für ListView mit Livebinding
 
eben, Gruppenwechsel programmieren macht viel mehr Spaß als so einen popligen SQL-Befehl absetzen. :thumb:

Darlo 2. Sep 2015 12:24

AW: Problem bei SELCT-Statement für ListView mit Livebinding
 
@baumina, danke, das funktioniert :thumb:

Btw.:Der Outer-Join wird wohl von UniDac bei SQLITE nicht unterstützt....

frankyboy1974 2. Sep 2015 12:41

AW: Problem bei SELCT-Statement für ListView mit Livebinding
 
@baumina

:lol:

mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz