webForumDet fria alternativet

Hjälp med SQL-fråga

5 svar · 831 visningar · startad av colahelge

colahelgeMedlem sedan feb. 20106 inlägg
#1

MySQL 5

[B]ID, Arr, Serial, X, Namn[/B]
1, 41, 212, 1, Erik
2, 41, 212, 1, Erik
3, 41, 212, 1, Erik
4, 34, 212, 1, Peter
5, 23, 232, 1, Olle
6, 13, 121, -1, Lotta

ID - unikt ID för varje event
Arr - Arrangör inte unikt för någon Serial
Serial - Ett ID som inte är unikt för någon Arr
Namn - Namn på eventet

Målet är att hämta alla rader där X inte är -1. Inga konstigheter. Problemet är att det kan finnas dubletter i systemet (vilket är fallet på ID 1-3). Så jag undrar om man kan få till en fråga som tar bort dessa dubletter.

Man vet att det är en dublett på Arr + Serial som alltid är en unik kombo. (Arr = 41 och Serial = 212 finns alltså inte på något annat ställe än för ID 1-3)

Mitt målresultat skulle alltså vara:

1, 41, 212, 1, Erik
4, 34, 212, 1, Peter
5, 23, 232, 1, Olle
nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Välkommen till webForum!
GROUP BY!

SELECT ID, Arr, Serial, Namn
FROM tabell
WHERE x > -1
GROUP BY Arr

Edit: Du vill ta bort dem... Hmm, vänta lite...

voigtann1Medlem sedan juni 20019 519 inlägg
#3

SELECT DISTINCT ....

är det det det du är ute efter?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4

Jag ser två valmöjligheter.

  1. "Fuska" och skapa en temporär tabell där du insertar resultatet från min fråga ovan:
INSERT INTO tabell_temp (ID, Arr, Serial, x, Namn)
SELECT ID, Arr, Serial, x, Namn
FROM tabell
WHERE x > -1
GROUP BY Arr
  1. Försöka dig på att DELETEa de oönskade raderna. Jag kan försöka knåpa ihop en fråga om du absolut vill gå den vägen.
colahelgeMedlem sedan feb. 20106 inlägg
#5

Sry, uttryckte mig lite klumpigt. Sömnbrist gör en dum i huvvet.

Jag vill alltså inte "fysiskt" ta bort dubletterna, jag vill bara inte ha med dem i mitt urval.

voigtann1 skrev:

SELECT DISTINCT ....

är det det det du är ute efter?

Något sådant ja, problemet är att det gäller för en specifik kombination av Arr och Serial. Det kan finnas flera event av samma Arr och alla dom ska med och det finns även olika event med samma Serial, Men de poster där Arr och Serial är lika (för de olika posterna, se ID 1-3 i första inlägget) så är det dubletter och bara 1 ska räknas.

Dessa dubletter är ett fel i systemet, eventen har blivit rapporterade flera gånger. Det bästa vore ju givetvis att ta bort alla dubletter bara, men detta kräver en hel del manuellt spårande i systemet (inte bara denna tabell, utan massa transaktioner fram och tillbaka). Och det finns ingen större nytta av det heller, förutom just för att få fram antal event (utan dubletter).

Kanske inte ens är möjligt i SQL men det vore en liten och bra lösning på ett litet problem. Hoppas jag förtydligat lite.

Peter SMedlem sedan dec. 20025 483 inlägg
#6
select
	min(id),
	arr,
	serial,
	min(x),
	min(namn)
from
	t
group by
	arr,
	serial
132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)