[sql] query

Pagina: 1
Acties:

  • Tinuske
  • Registratie: September 2002
  • Laatst online: 08-02 20:43
ik heb 3 tabellen,nml. : Melding,Actie, Notitie

Een melding heeft 1 of meerdere acties en een actie heeft weer 1 of meerdere notitie's

In het zoekscherm , laat ik bij de resultaten alle gegevens uit de meldingtabel zien behorende bij de zoekcriteria.

Nu is het verzoek gekomen om naast de gegevens uit de tabel melding ook de laatste notitie te laten zien in het resultatenscherm.

Nu zitten de notitie's als het ware 2 tabellen verder en is de sql niet makkelijk.

Ik krijg het niet voor elkaar om alleen de laatste notitie op te halen tezamen met de meldingsgegevens.

hieronder mijn poging :
code:
1
2
3
4
5
6
7
8
SELECT     dbo.calMelding.MeldingID, MAX(dbo.calNotitie.NotitieID) AS Expr1, 
         MAX(dbo.calNotitie.ActieID) AS Expr2, CONVERT(varchar(5000), 
                      dbo.calNotitie.Notitie) AS Expr3
FROM         dbo.calMelding INNER JOIN
                      dbo.calActie ON dbo.calMelding.MeldingID = dbo.calActie.MeldingID INNER JOIN
                      dbo.calNotitie ON dbo.calActie.ActieID = dbo.calNotitie.ActieID

GROUP BY dbo.calMelding.MeldingID, CONVERT(varchar(5000), dbo.calNotitie.Notitie)

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Welk resultaat krijg je nu dan? Een SQL-error, of een verkeerde uitkomst?
En welke SQL-engine gebruik je?

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • Moosh
  • Registratie: Maart 2002
  • Laatst online: 03-02-2023
Ja het maakt nogal een verschil of je nou msaccess, SQL server of Oracle gebruikt.

  • EfBe
  • Registratie: Januari 2000
  • Niet online
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT  calMelding.*,
        calNotitie.*
FROM    calMelding M INNER JOIN calActie A
        ON M.MeldingID = A.MeldingID 
        INNER JOIN calNotitie N
        ON A.ActieID = N.ActieID
WHERE   calNotitie.NotitieID =
        (
            SELECT  TOP 1 NotitieID 
            FROM    calNotitie
            WHERE   ActieID =
            (
                SELECT  TOP 1 ActieID
                FROM    calActie
                WHERE   calActie.MeldingID = M.MeldingID
                ORDER BY ActieID DESC
            )
            ORDER BY NotitieID DESC
        )

Geen idee of het werkt, maar je moet het hierin zoeken denk ik.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • akakiwi
  • Registratie: September 2000
  • Laatst online: 20-03 11:13

akakiwi

I believe in the ruling class.

EfBe heeft de juiste oplossing voor je.
Je kunt er overigens beter voor kiezen om de WHERE calNotitie.bladiebla etc..... in je select te zetten met een relatie gelegt naar calNotitie.NotitieID omdat minder zwaar is voor je SQL server.

| Life is a game (and games are fun) | homepage |


  • Tinuske
  • Registratie: September 2002
  • Laatst online: 08-02 20:43
Bedankt voor jullie Response,

De oplossing van Efbe zou inderdaad de juiste zijn, ware het niet dat mijn beschrijving niet helemaal klopte
Het komt namelijk ook soms voor (vanwege een import van de oude meldingen) , dat er geen actie of geen notitie aan een melding hangt.
Ik zou allemaal dummy actie's en notitie's kunnen aanmaken voor de oude meldingen, maar is de sql query misschien zo aan te passen dat dat niet nodig is ?

Dus als resultaat de meldingentabel en ALS er een notitie is , alleen de laatste notitie laten zien.

Sorry voor mijn onvolledigheid, maar hopelijk weten jullie hier alsnog een oplossing voor.

Alvast bedankt!

  • Swa-baldie
  • Registratie: Juni 2002
  • Laatst online: 19-06-2023
Als je nou even vermeld wat voor een engine je gebruikt, kunnen we je een betere reactie geven. Als je bv oracle gebruikt zou ik niet voor het antwoord van EfBe gaan maar exists gebruiken. Dus iets meer info aub

  • Tinuske
  • Registratie: September 2002
  • Laatst online: 08-02 20:43
Het gaat hier om MS-SQL

  • Swa-baldie
  • Registratie: Juni 2002
  • Laatst online: 19-06-2023
Sorry daar weet ik niet veel van...

  • nescafe
  • Registratie: Januari 2001
  • Nu online
Probeer je where-clausule eens als LEFT OUTER JOIN-voorwaarde op te nemen. Indien deze onwaar is, geeft hij voor de rechtertabel in alle kolommen NULL terug.

[ Voor 5% gewijzigd door nescafe op 24-08-2004 20:21 ]

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans

Pagina: 1