[mysql] selecteren meerdere tabelen (4) *

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 21-09 15:23
Hallo,

Ik zit al een tijdje met een probleem te worstelen, ik ben een startpagina variant aan het ontwikkelen. Nu heb je op deze startpagina hoofdrubrieken (Electronica), welke allemaal een subrubriek (telefoons.startpagina.nl) hebben.

Elke subrubriek heeft weer diverse blokken op de pagina staan. (nokia, samsung, sony), en in deze blokken komen de links weer te staan naar diverse websites.

Nu wil ik graag kunnen zoeken in een enkele hoofdrubriek. Als ik zoek in alle rubrieken heb ik dit:

code:
1
2
3
4
SELECT * FROM startpagina_blockLinks
WHERE name LIKE '%winkel%' or `desc` LIKE '%winkel%' AND free!=3 
ORDER BY name 
LIMIT 0,20


Dit werkt prima, maar nu wil ik dus zoeken in een enkele rubriek, en deze leek mij opvraagbaar via deze weg:
blockLinks.blockId > pageBlocks.pageId > subGroups.rubriekId > groups.name
(rubriekId is eigenlijk groupId, en pageId is eigenlijk subGroups.id, benaming een beetje ongelukkig gekozen)

Dus ik dacht ik doe het op de volgende manier:

code:
1
2
3
4
SELECT * FROM startpagina_blockLinks, startpagina_pageBlocks, startpagina_subGroups, startpagina_groups 
WHERE startpagina_blockLinks.name LIKE '%blaat%' or startpagina_blockLinks.desc LIKE '%blaat%' AND startpagina_blockLinks.free!=3 AND startpagina_blockLinks.blockId=startpagina_pageBlocks.id AND startpagina_pageBlocks.pageId=startpagina_subGroups.id AND startpagina_subGroups.rubriekId=startpagina_groups.id AND startpagina_groups.name='Groothandels' 
ORDER BY startpagina_blockLinks.name 
LIMIT 0,20


Maar nu krijg ik alle resultaten constant terug.

Hier mijn database indeling (onnodige dingen weggelaten, de pijltjes geven de 'weg' aan die ik wilde bewandelen om te kijken wel hoofdgroepnaam bij welke link hoort.)

Afbeeldingslocatie: http://localhostr.com/files/db25ad/Picture+1.png

Alvast bedankt

Tweakers Time Machine Browser Extension | Chrome : Firefox


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23-09 21:37

Creepy

Tactical Espionage Splatterer

Je wilt een JOIN gebruiken (Programming FAQ - SQL).

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

ik vermoed dat je wat haakjes om je or statement bent vergeten

btw WHERE Tabel1.kolomA=Tabel2.kolomC is imho ook een inner join

Iperf


Acties:
  • 0 Henk 'm!

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 21-09 15:23
fish schreef op zondag 14 december 2008 @ 12:03:
ik vermoed dat je wat haakjes om je or statement bent vergeten

btw WHERE Tabel1.kolomA=Tabel2.kolomC is imho ook een inner join
Het waren inderdaad de haakjes, bedankt!

Tweakers Time Machine Browser Extension | Chrome : Firefox


Acties:
  • 0 Henk 'm!

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 21-09 15:23
Nog een vraagje betreft dit.

Ik probeer nu ook op plaatsnaam te zoeken, de plaatsnaam wordt opgehaald via de eigenaar van de link, welke in zijn profiel een plaatsnaam in kan vullen.

Dit doe ik met deze query:

code:
1
2
3
4
SELECT * FROM startpagina_blockLinks , startpagina_pageBlocks, startpagina_subGroups, startpagina_payments, startpagina_usersExtra 
WHERE (startpagina_blockLinks.name LIKE '%coole%' or startpagina_blockLinks.desc LIKE '%coole%') AND startpagina_blockLinks.free!=3 AND startpagina_blockLinks.blockId=startpagina_pageBlocks.id AND startpagina_pageBlocks.pageId=startpagina_payments.refId AND startpagina_payments.active=1 AND startpagina_payments.uid=startpagina_usersExtra.uid AND startpagina_usersExtra.town='dokkum' 
ORDER BY startpagina_blockLinks.name 
LIMIT 0,20


Maar hier krijg ik dus weer alle resultaten terug, doe ik dezelfde query MET ook nog op groepen selecteren, dan pakt hij wel alleen de link uit een bepaalde groep en woonplaats, de query die daar voor gebruikt wordt is:

code:
1
2
3
4
SELECT * FROM startpagina_blockLinks , startpagina_pageBlocks, startpagina_subGroups, startpagina_groups , startpagina_payments, startpagina_usersExtra 
WHERE (startpagina_blockLinks.name LIKE '%coole%' or startpagina_blockLinks.desc LIKE '%coole%') AND startpagina_blockLinks.free!=3 AND startpagina_blockLinks.blockId=startpagina_pageBlocks.id AND startpagina_pageBlocks.pageId=startpagina_subGroups.id AND startpagina_subGroups.rubriekId=startpagina_groups.id AND startpagina_groups.name='Groothandels' AND startpagina_blockLinks.free!=3 AND startpagina_blockLinks.blockId=startpagina_pageBlocks.id AND startpagina_pageBlocks.pageId=startpagina_payments.refId AND startpagina_payments.active=1 AND startpagina_payments.uid=startpagina_usersExtra.uid AND startpagina_usersExtra.town='dokkum' 
ORDER BY startpagina_blockLinks.name 
LIMIT 0,20


Ben ik weer haakjes vergeten of?

Tweakers Time Machine Browser Extension | Chrome : Firefox


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Leer allereerst eens af om impliciete joins te gebruiken; schrijf ze expliciet uit met "inner join", "left outer join" etc. Dat maakt je queries al een stuk leesbaarder. Verder verwijs ik je naar Creepy's post welke voldoende informatie voor je zou moeten bevatten; zorg dat je het concept joins onder de knie krijgt want daar heb je meer aan dan in 't wilde weg gaan zitten proberen en hopen dat 't werkt.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

RobIII schreef op maandag 15 december 2008 @ 00:16:
Leer allereerst eens af om impliciete joins te gebruiken; schrijf ze expliciet uit met "inner join", "left outer join" etc. Dat maakt je queries al een stuk leesbaarder. Verder verwijs ik je naar Creepy's post welke voldoende informatie voor je zou moeten bevatten; zorg dat je het concept joins onder de knie krijgt want daar heb je meer aan dan in 't wilde weg gaan zitten proberen en hopen dat 't werkt.
Wellicht is het handig om dit ook in de faq te vermelden waar creepy naar refereerd ;)


@ts en niet alles op één lijn neerplempen helpt ook al in de leesbaarheid

[ Voor 5% gewijzigd door Fish op 15-12-2008 00:52 ]

Iperf

Pagina: 1