AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken [SQL bzw. TSQL] Komplizierte SQL Anweisung
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL bzw. TSQL] Komplizierte SQL Anweisung

Ein Thema von ferby · begonnen am 16. Jul 2008 · letzter Beitrag vom 17. Jul 2008
Antwort Antwort
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

[SQL bzw. TSQL] Komplizierte SQL Anweisung

  Alt 16. Jul 2008, 18:09
Datenbank: MS SQL Server 2005 • Zugriff über: MS SQL Server 2005 Management Studio
Hallo,

ich weiß der Titel ist nicht sehr ausagekräftig, aber mir ist grad nix besseres eingefallen...


Also zu meinen eigentlichen Problem:

Ich habe eine Tabelle mit den Spalten
Company (hier steht immer 40 oder 60 drin)
NR (hier steht irgendein int drin)
Description (hier steht irgendein string)

Jetzt will ich alle Caption's auslesen die in 40+60 vorkommen,
wobei gilt, wenn es eine NR schon in 40 gibt, soll der Datensatz der Company 60 mit dieser NR weggelassen werden.

Ich habe mir sowas überlegt:

select distinct nr, Description from mytable

Leider geht das nicht, da die Description zu den selben NR der zwei Companys nicht eindeutig ist...


Hoffe man versteht mein Problem
Nein, nicht?

Na dann noch ein Beispiel:

Company NR Description
40 ------- 1 -- Hallo
40 ------- 2 -- Auto
60 ------- 1 -- Essen
60 ------- 5 -- Baum
60 ------- 3 -- Notebook
40 ------- 5 -- Müll

Ich will jetzt alles was vorkommt, wenn eine NR doppelt vorkommt, dann die wo Company = 40 ist.
also:

1 Hallo
2 Auto
3 Notebook
5 Müll

Wie muss hier die SQL Anweisung aussehen?



Ferby
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung

  Alt 16. Jul 2008, 18:12
SQL-Code:
SELECT nr, Description FROM mytable
WHERE Company = '40'
GROUP BY nr, Description
HAVING Count(*) > 1
Edit: bitte streichen, das ist wohl nicht das was du willst
Andreas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung

  Alt 16. Jul 2008, 18:17
SQL-Code:
select
    distinct t1.nr,
    t2 Description
from
    mytable t1
        join mytabel t2 pn t2.nr = t1.nr
where
    t1.company in (60,90)
order by
    t1.nr, t1.company;
Markus Kinzler
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#4

Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung

  Alt 16. Jul 2008, 19:21
Hello,

@shmia: ja ist leider wirklich nicht das was ich gebraucht habe

@mkinzler: Habe auch schon an einen join gedacht, aber geglaubt, dass es auch ohne irgendwie lösbar sein muss...
werde morgen in der Firma mal dein Statment ausprobieren,
Kann jetzt nicht ganz nachvolziehen ob's funktioniert, weil

Code:
where
    t1.company in (60,40) --nehm mal an du meinst 40 und nicht 90 !?
ist in meinen Augen immer true, da company es ja nur 60 oder 40 sein kann

und warum

Code:
select
    distinct t1.nr,
    t2 Description
denn wenn die nr bei beiden vorommt, soll die descrition von der firma 40 genommen werden,
wo macht das deine Abfrage?



Vielen Dank
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung

  Alt 16. Jul 2008, 19:39
SQL-Code:
SELECT company, nr, description
FROM mytable x
WHERE company = 40
   OR ( company = 60
       AND NOT EXISTS (SELECT *
                       FROM mytable
                       WHERE company = 40
                         AND nr = x.nr))
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#6

Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung

  Alt 16. Jul 2008, 19:45
Hello,

also das schaut auf den ersten Blick super aus, glaub das müsst funktionieren,
werde morgen bescheid geben
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung

  Alt 16. Jul 2008, 19:49
Hallo,

versuch' es mal damit:

SQL-Code:
/* Unser Endergebnis soll so aussehen */
select Company, Nr, Description from mytable
where Nr in
(
  /* Wir wollen nur die Nr haben */
  select nr from (
    /* Wir wollen die kleinere Nr von denen, die mehr als einmal vorkommen */
    select nr, min(company) from mytable
    where nr in
    (
      /* Wir wollen wissen, welche Nr mehr als einmal vorkommt. */
      select nr from (
        /* Wir zählen das Vorkommen von Nr */
        select nr, count(*) As Anzahl from mytable group by nr
      ) zwischenergebnis_1
      where anzahl > 1
    ) group by nr
  ) zwischenergebnis_2
)
Das von omata dürfte auch funktionieren.

Stephan
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#8

Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung

  Alt 16. Jul 2008, 19:56
müsste so auf den ersten blick auch funktionieren, werde mir aber morgen das mal genau angucken
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#9

Re: [SQL bzw. TSQL] Komplizierte SQL Anweisung

  Alt 17. Jul 2008, 10:42
Hello,

super SQL Statments funktionieren.

Danke
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:48 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