AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL-Problem mal wieder
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-Problem mal wieder

Ein Thema von Grolle · begonnen am 18. Mai 2009 · letzter Beitrag vom 19. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#1

SQL-Problem mal wieder

  Alt 18. Mai 2009, 19:54
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBDAC
Hallo,
ich habe mal wieder ein kleines Problem mit einer Abfrage:

SQL-Code:
SELECT tree.id, tree.name, tree2contact.contact_id FROM tree left join
tree2contact on tree.id = tree2contact.tree_id where tree2contact.contact_id=22
Die Tabellen sehen so aus:
SQL-Code:
Tree
---------
id
name
parent

tree2contact
---------
id
tree_id
contact_id
Ich will jetzt alle tree.name die tree.parent=0 ohne Dubletten(tree.name) und tree2contact.contact_id=22 (oder 0 wenn nicht zugeordnet).

Viele Grüße ...

  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: SQL-Problem mal wieder

  Alt 18. Mai 2009, 20:05
Hallo,

jaaaaa, wo ist denn das Problem ?

Zitat:
tree.name die tree.parent=0 ohne Dubletten(tree.name)
Select Distinct(Tree.Name), Tree.Id ...
Zitat:
und tree2contact.contact_id=22 (oder 0 wenn nicht zugeordnet).
Where ((tree2contact.contact_id=22) or (tree2contact.contact_id=0)) oder

Where ((tree2contact.contact_id=22) or (tree2contact.contact_id is Null))
Heiko
Heiko
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#3

Re: SQL-Problem mal wieder

  Alt 18. Mai 2009, 20:12
Zitat von hoika:
jaaaaa, wo ist denn das Problem ?
Where ((tree2contact.contact_id=22) or (tree2contact.contact_id is Null))
Da war das Problem

  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: SQL-Problem mal wieder

  Alt 18. Mai 2009, 20:15
Hallo,

tree.parent=0

hatte ich noch vergessen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#5

Re: SQL-Problem mal wieder

  Alt 18. Mai 2009, 20:52
Hi,

so ganz klappt das immer noch nicht. Die Anfrage sieht jetzt so aus:
SQL-Code:
SELECT distinct(tree.name) as name, tree.id as id, tree2contact.contact_id as contact_id from tree left join tree2contact on tree.id=tree2contact.tree_id
Where ((tree2contact.contact_id=25) or (tree2contact.contact_id is Null)) and tree.parent=0 order by tree.name
Bei Abfragen mit unterschiedlicher (tree2contact.contact_id=25) bekomme tree.name verschiedener Anzahl? Eigentlich müsste er mir doch alle rausschmeißen, oder überseh ich da was?

Viele Grüße ...

  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: SQL-Problem mal wieder

  Alt 18. Mai 2009, 20:57
Hallo,

du willst also nur einen Datensatz haben, oder
was ist mit

Zitat:
bekomme tree.name verschiedener Anzahl
gemeint.

Mal bitte Bsp.-Daten und was rauskommen soll.


Heiko
Heiko
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#7

Re: SQL-Problem mal wieder

  Alt 18. Mai 2009, 21:15
SQL-Code:
Tree
(ID, NAME, PARENT)
(6, 'Kunden', 0);
(8, 'Behörden', 0);
(9, 'Banken', 0);
(10, 'Intern', 6);

Tree2Contact
(ID, TREE_ID, CONTACT_ID)
(1, 8, 22);
(2, 6, 25);
(3, 6, 22);
SQL-Code:
SELECT distinct(tree.name) as name, tree.id as id, tree2contact.contact_id as contact_id from tree left join tree2contact on tree.id=tree2contact.tree_id
Where ((tree2contact.contact_id=25) or (tree2contact.contact_id is Null)) and tree.parent=0 order by tree.name
soll:
('Banken', 9, NULL);
('Behörden', 8, NULL);
('Kunden', 6, 25);
ist:
('Banken', 9, NULL);
('Kunden', 6, 25);


bei:
SQL-Code:
SELECT distinct(tree.name) as name, tree.id as id, tree2contact.contact_id as contact_id from tree left join tree2contact on tree.id=tree2contact.tree_id
Where ((tree2contact.contact_id=22) or (tree2contact.contact_id is Null)) and tree.parent=0 order by tree.name
soll:
('Banken', 9, NULL);
('Behörden', 8, 22);
('Kunden', 6, 22);
und ist auch so. (Teste mit IBExpert)

viele Grüße ...

  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: SQL-Problem mal wieder

  Alt 19. Mai 2009, 07:33
Hallo,

melkwüldig

Hänge mal die FDB an den 1. Thread an,
oder poste sie mal mit Hinweis auf den vorigen.


Heiko
Heiko
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#9

Re: SQL-Problem mal wieder

  Alt 19. Mai 2009, 08:02
SQL-Code:
SELECT
  distinct(tree.name) as name,
  tree.id as id,
  tree2contact.contact_id as contact_id
from
  tree
  left join tree2contact on tree.id=tree2contact.tree_id and
                            ((tree2contact.contact_id=25) or (tree2contact.contact_id is Null))
Where
  tree.parent=0
order by
  tree.name
alex
Alexander
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: SQL-Problem mal wieder

  Alt 19. Mai 2009, 12:23
Hallo alex517,

wo ist da der Unterschied ? (interessiert mich wirklich)
der Left Join bezieht sich ja nur auf das Tree(Id)


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:04 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