SQL meerdere regels samenvoegen

Status
Niet open voor verdere reacties.

Hommelte

Nieuwe gebruiker
Lid geworden
11 mrt 2014
Berichten
2
Hallo allen,

Ik heb een tabel waarin storingen bijgehouden worden. Als de storing komt wordt Active=1 en als deze opgelost wordt komt er een nieuwe regel met Active=0.
Nu ben ik op zoek naar een query die dus 2 regels samenvoegt zodat ik in 1 regel de gekomen en gegaan datum tijd kan zien. Hij moet dus zoeken naar de eerst volgende Active=0.


Is dit mogelijk??

gr,
Marcel

Tabel:
ID Event Active DT
-----------------------------------------------------
300150 Storing 1 0 2014-03-14:00:00
300151 Storing 2 1 2014-03-13:30:00
300152 Storing 1 1 2014-03-13:00:00
300153 Storing 1 0 2014-03-11:00:00
300154 Storing 1 1 2014-03-10:00:00

Gewenst resultaat:
Event DT_1 DT_0
----------------------------------------------------------
Storing 1 2014-03-13:00:00 2014-03-14:00:00 (is dus ID 300152 en 300150)
Storing 2 2014-03-13:30:00 NULL (is 300151)
Storing 1 2014-03-10:00:00 2014-03-11:00:00 (is 300154 en 300153)
 
Als ik het goed begrijp wil je dus 2 id's samenvoegen die dezelfde events hebben (dezelfde storing maar dan gekomen en gegaan). Van Active = 1 wil je de gekomen tijd weten en van active = 0 de gegaan tijd?

SELECT `Event`, `Active`, FROM `tabelnaam`
WHERE `id` = `id`AND `active` = 0

Als ik je goed begrijp zou dit je oplossing moeten zijn anders hoor ik je wel :p
 
Geen antwoord op je vraag maar waarom pak je eea niet logisch aan leg je de aanmeldtijd en afmeldtijd niet vast in 1 record?
Kun je meteen je kolom Active verwijderen.

Tardis
 
@Necoo66, ja ik wil van een event weten wanneer deze is gekomen en gegaan (1=gekomen, 0=gegaan). Ik geloof niet dat die query het juiste doed, maar zal morgen eens weer wat proberen.

@Tardis, Ja dat was mijn idee ook, echter wordt mij de tabel zo aangeleverd:(
 
Wat je wilt doen is een gelijke data set met andere waardes in een regel weergeven. Dit kan (tussen tabellen) met een FULL OUTER JOIN of in dezelfde tabel met een UNION ALL. Syntax :

SELECT expression1, expression2, ... expression_n
FROM tables
WHERE conditions
UNION ALL
SELECT expression1, expression2, ... expression_n
FROM tables
WHERE conditions;

Je krijgt dus twee simpele selects, een geeft je regel met active en een je regel met niet active. De union all geeft hem weer als een.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan