Probleempje met SQL

Pagina: 1
Acties:

  • Hatsekie_D
  • Registratie: April 2002
  • Laatst online: 14-07 17:45

Hatsekie_D

Doe mij maar een glaasje prik

Topicstarter
Ik ben een programma aan het schrijven die gegevens uit een database moet halen.
Nu heb ik een tabel Software, met daarin een GebruikersID en een SWItem.
GebruikersID is niet uniek dus kunnen er meerdere SWItems gekoppeld worden aan een GebruikersID.

Nu wil ik in mijn programma 2 zoekfuncties opnemen: een EN-zoekfunctie en een OF-zoekfunctie.
De OF-zoekfunctie is geen probleem, maar hoe krijg ik de EN-functie er in?
Ik wil dus bijvoorbeeld zoeken op alle gebruikers die EN 'Adobe Acrobat 4.0' EN 'Microsoft Messenger Service' geïnstalleerd hebben.

Hoe doe ik dit?

O ja, misschien dat het al eerder voorbij is gekomen, mijn excuses dan, maar ik heb geen idee waar ik op zou moeten zoeken. 'SQL' geeft toch wel erg veel topics...

  • whoami
  • Registratie: December 2000
  • Laatst online: 19:34
Waarom is GebruikersId niet uniek? Iets zegt mij dat dit wel uniek moet zijn.
Jouw datamodel is niet goed denk ik, dus misschien kun je dat best eens eerst aanpakken.
Maak een tabel Gebruikers:
code:
1
2
GebruikersId (Primary Key)
Gebruikersnaam

een tabel Software:
code:
1
2
SoftwareId (Primary Key)
Software


en een koppeltabel waarin je aangeeft welke gebruikers welke software hebben:
code:
1
2
GebruikerId
SoftwareId


Zo zorg je ervoor dat gebruikersId uniek is in de tabel gebruikers, maar een gebruiker wel meerdere software-titels kan hebben.

https://fgheysels.github.io/


  • Hatsekie_D
  • Registratie: April 2002
  • Laatst online: 14-07 17:45

Hatsekie_D

Doe mij maar een glaasje prik

Topicstarter
whoami schreef op 23 oktober 2002 @ 10:30:
Waarom is GebruikersId niet uniek? Iets zegt mij dat dit wel uniek moet zijn.
Jouw datamodel is niet goed denk ik, dus misschien kun je dat best eens eerst aanpakken.
Maak een tabel Gebruikers:
code:
1
2
GebruikersId (Primary Key)
Gebruikersnaam

een tabel Software:
code:
1
2
SoftwareId (Primary Key)
Software


en een koppeltabel waarin je aangeeft welke gebruikers welke software hebben:
code:
1
2
GebruikerId
SoftwareId


Zo zorg je ervoor dat gebruikersId uniek is in de tabel gebruikers, maar een gebruiker wel meerdere software-titels kan hebben.
Zo zou het in principe inderdaad ook kunnen maar ik heb voor dit datamodel gekozen omdat er zoveel verschillende softwarepakketten zijn dat het eigenlijk niet interessant is om er een aparte tabel voor te maken.
Maar ook al zou ik dat wel doen, dan zit ik nog met hetzelfde probleem volgens mij.

  • scan
  • Registratie: Augustus 2000
  • Laatst online: 26-10-2025
Zucht... je hebt toch wel meerdere gebruikers die het zelfde softwarepakket gebruiken ?
Denk het anders eerst nog eens goed uit en normaliseer je gegevens.

Een pc is net een brommer. je kan hem wel opvoeren maar het blijft nog steeds een brommer


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Post je query die je 'OF'-search regelt eens. Ik denk namelijk dat de 'EN' daar wel eens een beetje op zou kunnen lijken.

Never underestimate the power of


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 30-08 10:19

Dido

heforshe

Whoami's voorstel lijkt me sowieso een stuk voor de hand liggender als datamodel, ik ga er maar vanuit dat je dat uiteindelijk wel inziet en gebruikt, dus borduur ik daar even op voort.

Wat voor SQL hebben we het over? Dit is niet geoptimaliseerd, maar geeft wel wat je wilt denk ik:
code:
1
2
3
4
5
SELECT a.gebruikersID
  FROM koppeltabel a, koppeltabel b
 WHERE a.gebruikersID = b.gebruikersID
   AND a.softwareID = :zoeksoftware1
   AND b.softwareID = :zoeksoftware2

Is alleen bruikbaar voor een van te voren bepaald (in dit geval 2) aantal zoekargumenten, is wellicht niet ideaal...

[ Voor 0% gewijzigd door Dido op 23-10-2002 10:45 . Reden: dit is sexier, maar ongetest... ]

Wat betekent mijn avatar?


  • Carnifex
  • Registratie: Januari 2000
  • Laatst online: 14-08 11:17

Carnifex

auch

Zoals Whoami het voorstelt is volgens mij de enige goede oplossing om een many-to-many relatie te representeren in een relationale database. Om ook in de toekomst zeker te zijn van een consistente database kun je er niet omheen. Ookal heb je nu het 'idee' dat het overbodig is. Als je in de grote hoeveelheid data gaat zitten updaten/inserten/deleten dan merk je denk ik snel genoeg de problemen.

  • Hatsekie_D
  • Registratie: April 2002
  • Laatst online: 14-07 17:45

Hatsekie_D

Doe mij maar een glaasje prik

Topicstarter
Carnifex schreef op 23 oktober 2002 @ 10:45:
Zoals Whoami het voorstelt is volgens mij de enige goede oplossing om een many-to-many relatie te representeren in een relationale database. Om ook in de toekomst zeker te zijn van een consistente database kun je er niet omheen. Ookal heb je nu het 'idee' dat het overbodig is. Als je in de grote hoeveelheid data gaat zitten updaten/inserten/deleten dan merk je denk ik snel genoeg de problemen.
Ok, ok... ik pas de database al aan.... :)
En het programma dan ook gelijk maar, anders werkt er weer nix natuurlijk... :)

In elk geval bedankt voor de tips.

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Hatsekie_D schreef op 23 oktober 2002 @ 11:31:
Ok, ok... ik pas de database al aan.... :)
En het programma dan ook gelijk maar, anders werkt er weer nix natuurlijk... :)

In elk geval bedankt voor de tips.
Kunnen we daarna verder praten over je query. :)

Never underestimate the power of


  • Hatsekie_D
  • Registratie: April 2002
  • Laatst online: 14-07 17:45

Hatsekie_D

Doe mij maar een glaasje prik

Topicstarter
Carnifex schreef op 23 oktober 2002 @ 10:45:
Zoals Whoami het voorstelt is volgens mij de enige goede oplossing om een many-to-many relatie te representeren in een relationale database. Om ook in de toekomst zeker te zijn van een consistente database kun je er niet omheen. Ookal heb je nu het 'idee' dat het overbodig is. Als je in de grote hoeveelheid data gaat zitten updaten/inserten/deleten dan merk je denk ik snel genoeg de problemen.
Krèg nah wat!
M'n dbtje is een stukkie kleiner... :D :D

Zo... nu es verder met die zoek-query

Ik probeer eerst die van Dido wel ff

  • whoami
  • Registratie: December 2000
  • Laatst online: 19:34
Kijk eens naar de verschillende logische operatoren and en or.
Als je de and- query heb, heb je mits een kleine aanpassing de or ook.

https://fgheysels.github.io/


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 30-08 10:19

Dido

heforshe

whoami schreef op 23 oktober 2002 @ 13:26:
Kijk eens naar de verschillende logische operatoren and en or.
Als je de and- query heb, heb je mits een kleine aanpassing de or ook.
Het probleem was nou juist die AND query :)

Ik ben wel benieuwd of mijn ideetje gewerkt heeft...

Wat betekent mijn avatar?


  • Hatsekie_D
  • Registratie: April 2002
  • Laatst online: 14-07 17:45

Hatsekie_D

Doe mij maar een glaasje prik

Topicstarter
Dido schreef op 23 oktober 2002 @ 13:43:
[...]

Het probleem was nou juist die AND query :)

Ik ben wel benieuwd of mijn ideetje gewerkt heeft...
Ik snap er echt helemaal geen f*ck meer van, ik loop helemaal vast.
Als ik jouw query (met een kleine aanpassing) gebruik in Access geeft 'ie netjes 3 gebruikers weer, verwerk ik precies dezelfde query in het programma, doet 'ie gewoon helemaal nix.
Ik kap er voor vandaag nu mee, ben er zat van. Misschien ga ik straks nog ff verder...
Pagina: 1