[MySQL] Voorkeurswaarde teruggeven ipv eerste in tabel

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • iznogood
  • Registratie: September 2001
  • Niet online
Ik zit met een uitdaging, waar ik niet goed uitkom. De bedoeling is dat ik een unieke src_id en een (niet unieke) url_id terugkrijg en waarbij ik zelf een url_id op kan geven. Wat ik al geprobeerd heb is om in de ORDER BY statement te zeggen dat de u.url_id='1', maar helaas geeft mijn query dan niet alle src_id's terug. Ook heb ik een UNION proberen te maken waarin ik in de eerste tabel zeg dat u.url gelijk moet zijn aan 1 en in de 2e tabel niet gelijk moet zijn aan 1, hier loop ik echter tegen teveel problemen aan waar ik niet uit kom, en ik geef ook niet de voorkeur aan een UNION vanwege zijn trage karakter. Voor iedere unieke src_id moet 1 rij terugkomen. Ook de overige src_id's die niet voldoen aan de url_id wil ik als output hebben.

code:
1
2
3
4
5
SELECT s.src_id,s.src_name,s.src_type,u.url_id,u.url_name
FROM src AS s,act AS a, urls AS u 
WHERE  s.src_id=a.src_id AND a.act_type='src' AND u.url_id=a.url_id
GROUP BY a.src_id
ORDER BY src_type, src_name


Dus bijvoorbeeld:
ik geef (ergens) mijn query op: url_id=1

src_id,url_id
0,0 <- dit wordt nu teruggegeven en klopt niet
0,1 <- deze waarde wil ik terugkrijgen

Tabel urls: (hierin staan de URLS, is gelinkt aan SRC)
===========
url_id,url_name
----------------------
0,naam1
1,naam2

Tabel act: (hierin wordt de tabel URLS en SRC met elkaar gekoppeld)
====================
act_id,url_id,src_id,act_type
----------------------------------------
0,0,0,src
1,0,1,src
2,1,0,src
3,1,1,src

Tabel src (hierin staan de bestanden, gelinkt aan ACT)
============
src_id,src_name,src_type
0,naam1,abc
1,naam2,def

Heeft iemand een oplossing voor dit probleem?

Just as Good


Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
iznogood schreef op maandag 19 november 2012 @ 22:45:
ORDER BY statement te zeggen dat de u.url_id='1', maar helaas geeft mijn query dan niet alle src_id's
ik begrijp geen zak van je hele probleem..
maarrrr... als je url_id=1 als je eerste resultaat wilt hebben door de order by, dan moet je juist order by url_id <> 1 doen...

immers: url_id <> 1 is, als de url_id WEL gelijk is aan 1 ==> false
en: url_id = 1 is, als de url_id WEL gelijk is aan 1 ==> true

mysql denkt dan: false = 0, true = 1 --> order by: de false moet als eerste worden weergegeven..