FOK!forum / Digital Corner / [mysql] Union en distinct
TechXPwoensdag 28 maart 2007 @ 13:29
Even een vraagje. Ik heb drie queries. En met union voeg ik ze samen.

Probleem is dat ik dubbele resultaten krijg. Mijn queries zien er nu zo ongeveer uit:
quote:
select DISTINCT(WEEKOFYEAR(FROM_UNIXTIME(date))) as WEEKNR , YEAR(FROM_UNIXTIME(date)) AS year from tbl1

union

select DISTINCT(WEEKOFYEAR(FROM_UNIXTIME(date))) as WEEKNR , YEAR(FROM_UNIXTIME(date)) AS year from tbl2

union

select DISTINCT(WEEKOFYEAR(FROM_UNIXTIME(date))) as WEEKNR , YEAR(FROM_UNIXTIME(date)) AS year from tbl3

order by date desc
Als resultaat krijg ik een lijst. Gerangschikt op week en jaar, maar ik krijg dubbele resultaten.

- week 1, 2007
- week 1, 2007
- week 3, 2007
- week 4, 2007
- week 4, 2007
- etc.

afhankelijk van aantal items in de week is het aantal dubbele.

Kan ik over die hele union ook zorgen dat de dubbele eruit gaan?

Iemand die dat weet?

thanks
TechXPwoensdag 28 maart 2007 @ 19:54
Niemand?
SuperRembowoensdag 28 maart 2007 @ 22:11
Kan je er niet gewoon nog een select omheen zetten?
TechXPwoensdag 28 maart 2007 @ 23:12
hoe? eerlijk gezegd heb ik wat meer ervaring met wat simpelere queries. Hoewel ik in mijn opleiding wel wat ingewikkeldere heb gehad.

Maar weet je wellicht hoe precies? Moet ik dan gewoon het volgende doen?:

select * from (hier de query)
SuperRembowoensdag 28 maart 2007 @ 23:25
Zo iets

1
2
3
4
5
6
7
SELECT DISTINCT foo
FROM (
   SELECT foo FROM bar1
   UNION ALL
   SELECT foo FROM bar2
) bar
ORDER BY foo


Maar dat zou ook vreselijk traag kunnen zijn. Is je data model wel handig gekozen?
TechXPwoensdag 28 maart 2007 @ 23:50
Ik zal even moeten testen of het op die manier (te) traag wordt. Ik ga het morgen eens proberen of het op die manier lukt.

Dank in ieder geval.