[SQL]regel selecteren als waarde ook in andere tabel bestaat

Pagina: 1
Acties:
  • 370 views sinds 30-01-2008
  • Reageer

  • Ethnocentrix
  • Registratie: Augustus 2002
  • Laatst online: 21:53

Ethnocentrix

Rijkserkend prutser

Topicstarter
Ik ben bezig met een query voor een menu'tje. De tabel ziet er (vereenvoudigd) zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
MENU:
| groep  |
------------
| menu1 |
| menu2 |
| menu3 |

CONTENT:
| groep   | titel            |
-----------------------------
| menu2 | MenuItem1 |
| menu3 | MenuItem2 |


Ik ben nu op zoek naar een SQL-code waarmee ik het volgende krijg:
Menu2
Menu3

Ik wil dus alleen de regels in menu.groep selecteren waarvan de waarde minimaal 1x in content.groep staat.

Ik heb zelf de volgende code gemaakt, maar die werkt dus niet :(
code:
1
SELECT menu.groep FROM menu,content GROUP BY menu.id HAVING COUNT(content.groep=menu.groep)>0


Weet iemand hoe ik deze code werkend kan krijgen? Alvast bedankt!

[ Voor 2% gewijzigd door Ethnocentrix op 27-09-2004 22:41 . Reden: foutje in de sql verbeterd ]

You know you're an engineer if you have no life & can prove it mathematically.


  • purge
  • Registratie: November 2000
  • Niet online
Wat gebeurt er als je een relatie maakt tussen die twee tabellen.
Met de enterprise manager krijg je de gewenste uitvoer.
In plaats van de 'group by' en 'having' krijg je een 'inner join' die werkt zeker.
Ik spuur niet de hele SQL-query voor je uit, mocht je er echt niet uitkomen dan help ik je verder ;)

[edit]Ik noemde even 'enterprise manager' omdat ik er van uit ging dat je MS-SQL bedoelde. Mocht je een andere database gebruiken zal deze tool ongetwijfeld anders heten. (met wat hand/zoekwerk kom je er vast wel uit)

[ Voor 31% gewijzigd door purge op 27-09-2004 22:49 ]


  • Freee!!
  • Registratie: December 2002
  • Laatst online: 19:14

Freee!!

Trotse papa van Toon en Len!

Kijk eens naar EXISTS

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


  • Ethnocentrix
  • Registratie: Augustus 2002
  • Laatst online: 21:53

Ethnocentrix

Rijkserkend prutser

Topicstarter
EXISTS is inderdaad wat ik nodig heb!
Ik heb in de mysql handleiding deze code gevonden:
code:
1
2
3
4
5
What kind of store is present in one or more cities?

SELECT DISTINCT store_type FROM Stores
  WHERE EXISTS (SELECT * FROM Cities_Stores
                WHERE Cities_Stores.store_type = Stores.store_type);


Als je deze code omzet naar mijn databse krijg je (volgens mij) dit:
code:
1
2
3
SELECT DISTINCT groep FROM menu
WHERE EXISTS (SELECT * FROM content
WHERE content.groep = menu.groep);


Maar als ik deze code probeer krijg ik dus een foutmeldig :(
code:
1
2
3
4
ERROR 1064: You have an error in your SQL syntax.  Check the manual that corresp
onds to your MySQL server version for the right syntax to use near 'EXISTS (SELE
CT * FROM content
WHERE content.groep = menu.g

Het lijkt dus dat exists niet werkt, maar het zou toch moeten werken? Ik heb aan de code zelf niets veranderd, alleen aan de namen van de tabellen en kolommen. Iemand een idee waar de fout zit?

[ Voor 14% gewijzigd door Ethnocentrix op 27-09-2004 23:35 ]

You know you're an engineer if you have no life & can prove it mathematically.


  • klokop
  • Registratie: Juli 2001
  • Laatst online: 30-03 19:56

klokop

swiekie swoeng

Die error wordt veroorzaakt door de subselect. Kan niet in mysql (althans, in de allernieuwste verseis wel...).

"Passing silhouettes of strange illuminated mannequins"


  • Ethnocentrix
  • Registratie: Augustus 2002
  • Laatst online: 21:53

Ethnocentrix

Rijkserkend prutser

Topicstarter
hm... da's balen :(
Iemand misschien een idee om dit te omzeilen? Ik ga me morgen iig verdiepen in inner joins, altijd handig. :)

You know you're an engineer if you have no life & can prove it mathematically.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-03 14:33

NMe

Quia Ego Sic Dico.

Ethnocentrix schreef op 27 september 2004 @ 23:50:
hm... da's balen :(
Iemand misschien een idee om dit te omzeilen? Ik ga me morgen iig verdiepen in inner joins, altijd handig. :)
Je geeft het antwoord zelf al. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Ethnocentrix
  • Registratie: Augustus 2002
  • Laatst online: 21:53

Ethnocentrix

Rijkserkend prutser

Topicstarter
Toch raar dat ze dan codes in d'r eigen handleiding zetten die niet werken :+

[ Voor 38% gewijzigd door Ethnocentrix op 27-09-2004 23:53 . Reden: linkje toegevoegd ]

You know you're an engineer if you have no life & can prove it mathematically.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-03 14:33

NMe

Quia Ego Sic Dico.

Ethnocentrix schreef op 27 september 2004 @ 23:52:
Toch raar dat ze dan codes in d'r eigen handleiding zetten die niet werken :+
Dat is niet raar, want ze werken wel. In MySQL >= 4.1. :)

Edit: overigens moet je dit maar eens lezen, gaat over het herschrijven van subqueries naar joins. Met name dit is interessant:
The queries:

code:
1
2
SELECT * FROM t1 WHERE id NOT IN (SELECT id FROM t2);
SELECT * FROM t1 WHERE NOT EXISTS (SELECT id FROM t2 WHERE t1.id=t2.id);


Can be rewritten as:

code:
1
2
SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id
                                       WHERE table2.id IS NULL;

[ Voor 46% gewijzigd door NMe op 27-09-2004 23:56 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Ethnocentrix
  • Registratie: Augustus 2002
  • Laatst online: 21:53

Ethnocentrix

Rijkserkend prutser

Topicstarter
Bedankt allemaal! Ik denk dat het met de code va NMe84 moet gaat lukken, maar dat probeer ik morgen even.

Nogmaals bedankt!

You know you're an engineer if you have no life & can prove it mathematically.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1