Toon posts:

[mysql]query zonder subselects

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een query die grofweg het volgende resultaat geeft:
id | titel | status | header | footer

waarbij de header en footer op dit moment id's zijn. De header en footer staan in de tabel templates, en na de eerste query worden ze daar uit gehaald. Is het op enige manier mogelijk om in 1 keer de juiste data in de velden header en footer te krijgen?
Het probleem is dus dat er data uit 2 rows van 1 tabel in 2 resultaatvelden van de query gezet moeten worden. Is dit zowiezo wel mogelijk zonder subselects (ik werk met mysql)

Het zou namelijk een mooiere oplossing zijn dan meerdere queries.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:28

Janoz

Moderator Devschuur®

!litemod

Joinen. Da's toch wel een van de basis principes van relationele databases als je het mij vraagt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Ik heb wel eens een paar joins gemaakt, maar ik moet toegeven dat ik daar lang niet alles van begrepen heb. Ik heb het zojuist nog eens bekeken en ik kom er niet uit. Hier de query:
code:
1
2
3
4
5
6
SELECT profielen.beveiliging_waarde, paginas.deeplink, paginas.titel, 
IF(paginas.header = 0 ,IF(profielen.header= 0, '10',profielen.header),paginas.header) as header, 
IF(paginas.footer = 0 ,IF(profielen.footer= 0, '11',profielen.footer),paginas.footer) as footer 
FROM profielen, paginas 
WHERE profielen.id='7' AND paginas.id='15'
AND paginas.profiel_id = profielen.id


Op dit moment krijg ik dus wat waarden uit de database, en de velden header en footer. Die bevatten dus de id van de template.
De if constructie werkt alsvolgt: als geen template ingesteld voor pagina, pak die van het profiel, als die ook niet is ingesteld pak dan die van de site.

De bedoeling was dus dat de code van de templates uit de tabel templates gehaald wordt en in de velden direct staat.
Inmiddels heb ik besloten om toch voor de losse queries te gaan, zodat de pagina ook werkt als er geheel geen templates opgegeven zijn. Maar ik ben nog steeds wel benieuwd naar een mogelijke oplossing, om ervan te leren

  • anjin
  • Registratie: Juni 2002
  • Laatst online: 03-02-2025

anjin

We are in control.

Als ik het goed begrijp haal je de foreign keys header en footer id op uit tabel 1,
en je wilt de code van de header en footer ophalen uit de 2e tabel.
Dan is het een kwestie van die 2 tabellen joinen in je query.

Zoiets als

Select tabel1.id id, tabel1.titel titel, tabel1.status status, tabel2.header header,tabel2.footer footer
from tabel1,tabel2
where tabel1.id = <vul hier je record id in>
and tabel1.footer = tabel2.footer_id
and tabel1.header = tabel2.header_id

de velden header en footer bevatten nu de footer en header code uit tabel2

Who is this general failure and why is he reading my drive?