Login: ( registrieren / neues Passwort )
  Cookies müssen aktiviert sein!

Navigation
Main-Content
» News-Center
» Hacking-Zone
» Forum
» IT-Quiz
» IRC-Webchat

Features / Downloads
» Krypto-Lab
» Digital-Library
» Anonymous?
» HS-Decoder
» Linkliste
» Download-Center
» HackTV-Center

Community-Infos
» Hall of Fame
» Hall of Lame
» Mitglieder
» Skill-Suche

About HS
» Happy-Shop
» Infos & Hilfe
» Partner-Seiten
» HS unterstützen!
» Gästebuch (add)
» Statistiken

1. Begriff markieren
2. Button anklicken
Statistik
Online : (19 User)
IRC Nimda
sowie 18 Gäste

IRC-Chat : (19 User)

Voting
Nutzt ihr euer handy zum mobilen surfen?
selten
oft
gar nicht
 
   Umfrage-Seite

Partner-Seiten

Partner werden

INDEX » Datenbanken » sql query gesucht    Seite: 1
Mit dem Betreten dieses Forum, werden alle Boardregeln ausnahmslos anerkannt. Es dürfen weder komplette Lösungswege noch Teile von Passwörtern zur Hacking-Zone hier getauscht werden. Auch sind alle illegalen Themen streng verboten. Bitte zu erst versuchen selbst eine Lösung zu finden und die Suchfunktion zu benutzen. Beiträge der letzten 24 Stunden
Alle ungelesenen Beiträge anzeigen
Alle Beiträge als gelesen markieren
Alle Beiträge als ungelesen markieren
 

 Author  Thema: sql query gesucht 
20.03.2009 12:33
magenspueler

Postings: 40
Hackits: 44 von 183

ich habe folgende abfrage:

Source-Code:

SELECT 
    dbo.AZT_ADRS.INT_ID,
    dbo.AZT_ADRS.VOR_NAME,
    dbo.AZS_PHST.BIS_DAT,
    dbo.AZS_PKONT.KTKT_INH
FROM 
    dbo.AZS_PHST,
    dbo.AZT_ADRS,
    dbo.AZS_PKONT 
WHERE 
    dbo.AZS_PHST.INT_ID=dbo.AZT_ADRS.INT_ID 
AND 
    dbo.AZS_PHST.INT_ID=dbo.AZS_PKONT.INT_ID


das resultat ist hier eine tabelle, die beispielsweise 2 namen findet, aber da es in der tabelle azt_adrs mehrere einträge mit der gleichen int_id gibt sieht das resultat bsw so aus:

Source-Code:

int_id | vor_name | bis_dat                 | ktkt_inh
-------+----------+-------------------------+-----------
1      |alice     | 2002-04-09 00:00:00.000 | foo
1      |alice     | 2004-15-01 00:00:00.000 | foo
1      |alice     | 2003-23-12 00:00:00.000 | foo
2      |bob       | 2001-04-09 00:00:00.000 | bar
2      |bob       | 2006-09-10 00:00:00.000 | bar


die tabelle die ich haben möchte, soll zu jeder id genau eine zeile in der result-tabelle haben und zwar genau die, bei der das bis_dat datum am spätesten ist. ich möchte also für dieses beispiel folgendes erreichen:

Source-Code:

int_id | vor_name | bis_dat                 | ktkt_inh
-------+----------+-------------------------+-----------
1      |alice     | 2004-15-01 00:00:00.000 | foo
2      |bob       | 2006-09-10 00:00:00.000 | bar


wie muss ich mein query formulieren um das zu erreichen?

  Quote | Edit | Delete | Alert!!!  #001
20.03.2009 13:22
Vellas
*Moderator*

Postings: 1062
Hackits: 157 von 183

Hi!

Das müsste dann wohl etwa so aussehen:

Source-Code:

SELECT 
    dbo.AZT_ADRS.INT_ID,
    dbo.AZT_ADRS.VOR_NAME,
    dbo.AZS_PHST.BIS_DAT,
    dbo.AZS_PKONT.KTKT_INH
FROM 
    dbo.AZS_PHST,
    dbo.AZT_ADRS,
    dbo.AZS_PKONT 
WHERE 
    dbo.AZS_PHST.INT_ID=dbo.AZT_ADRS.INT_ID 
AND 
    dbo.AZS_PHST.INT_ID=dbo.AZS_PKONT.INT_ID
AND
    dbo.AZS_PHST.BIS_DAT IN (SELECT max(dbo.AZS_PHST.BIS_DAT) FROM dbo.AZS_PHST GROUP BY dbo.AZS_PHST.INT_ID


Also etwa diesem hier (Antwort von Madpawn):
Selecting Max Date for Many Records

Edit:
Vllt. kann man es so kürzen:

Source-Code:

SELECT 
    dbo.AZT_ADRS.INT_ID,
    dbo.AZT_ADRS.VOR_NAME,
    max(dbo.AZS_PHST.BIS_DAT),
    dbo.AZS_PKONT.KTKT_INH
FROM 
    dbo.AZS_PHST,
    dbo.AZT_ADRS,
    dbo.AZS_PKONT 
WHERE 
    dbo.AZS_PHST.INT_ID=dbo.AZT_ADRS.INT_ID 
AND 
    dbo.AZS_PHST.INT_ID=dbo.AZS_PKONT.INT_ID
GROUP BY
    dbo.AZT_ADRS.INT_ID



Greetz


Dieser Beitrag wurde am 20.03.2009 - 13:28 von Vellas editiert.
  Quote | Edit | Delete | Alert!!!  #002
20.03.2009 14:44
magenspueler

Postings: 40
Hackits: 44 von 183

danke, das is perfekt :-)

  Quote | Edit | Delete | Alert!!!  #003
25.03.2009 13:34
Highlander
*Cheater*

Postings: 33
Hackits: 155 von 183

Hallo,

wäre es nicht sinnvoller die Tabellen zu joinen. Würde dann in etwa so aussehen:


Source-Code:

SELECT B.INT_ID, B.VOR_NAME, max(A.BIS_DAT), C.KTKT_INH
  FROM  JOIN dbo.AZS_PHST  A
  INNER JOIN dbo.AZT_ADRS  B on A.INT_ID=B.INT_ID
  INNER JOIN dbo.AZS_PKONT C on A.INT_ID=C.INT_ID
  GROUP BY
    A.INT_ID


Gruß
Highlander

Dieser Beitrag wurde am 25.03.2009 - 13:35 von Highlander editiert.
  Quote | Edit | Delete | Alert!!!  #004
25.03.2009 14:01
Vellas
*Moderator*

Postings: 1062
Hackits: 157 von 183

@Highlander:
Das was ich gepostet habe ist ein impliziter inner join. Deines ein expliziter inner join. Einziger unterschied ist also lediglich die Schreibweise.
Siehe auch: INNER JOIN

Greetz


Dieser Beitrag wurde am 25.03.2009 - 14:02 von Vellas editiert.
  Quote | Edit | Delete | Alert!!!  #005
 INDEX » Datenbanken » Seite: 1

    ! GESPERRT !  


  

Need help? visit the IRC-Chat or Message-Board
© 2004 - 2019 happy-soft
"Life is a game; C u next leve!"