Uitkomst query op basis van 2 condities

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

J C

J C

30/03/2017 07:36:24
Quote Anchor link
Ik heb een query gemaakt waarbij de uitkomst gebaseerd moet zijn op 2 condities uit hetzelfde tabel.
Namelijk:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
Select
producten.idproduct AS id, producten.productlink, producten.prijs, prod_omschrijving.producttitel, prod_categorie.idcategorieen, merk.merknaam
FROM producten
INNER JOIN prod_omschrijving ON producten.idproduct=prod_omschrijving.idproduct
INNER JOIN prod_categorie ON producten.idproduct=prod_categorie.idproduct
INNER JOIN merk ON producten.idmerk=merk.idmerk
INNER JOIN prod_sorteer ON prod_sorteer.idproduct=producten.idproduct
WHERE prod_omschrijving.taal='NL'
AND producten.verhuurlijst='1'
AND aantal >=0
AND prod_categorie.idcategorieen='5024'
AND prod_sorteer.groupid='3'
AND prod_sorteer.groupid='4'
GROUP BY prod_sorteer.idproduct
ORDER BY prod_omschrijving.producttitel
LIMIT 9 OFFSET 0
?>

Het gaat dan om dit gedeelte:
AND prod_sorteer.groupid='3'
AND prod_sorteer.groupid='4'

op deze pagina:
http://www.jcsl.nl/index-clean.php?lan=NL&pagina=verhuur&cat=rigging&subcat=truss&trusseigenschap=baseplate&trusssoort=vierkant_truss&pagnr=1

Op de pagina wordt de query ook weergegeven.

Wat ik dus wil is nu alle producten weergeven die in het tabel prod_sorteer bij de waarde groupid zowel 3 als 4 hebben.

het tabel ziet er als volgt uit:
INSERT INTO `prod_sorteer` (`id`, `idproduct`, `groupid`) VALUES
(21, 310, 3),
(34, 310, 4)

(ik heb de inhoud van het tabel even beperkt tot product 310 die als groupid 3 en 4 heeft).

Maar als ik dit zo doe krijg ik 0 resultaten. Nu had ik ergens gegelzen dat ik OR moest gebruiken, maar in dat geval krijg ik de resultaten die zowel groupid 3 of groupid4 hebben en ik wil juist dat ze aan beide condities voldoen.
Als er maar 1 conditie geselecteerd wordt werkt het script uiteraard wel.


Benader ik dit helemaal verkeerd en moet ik de opbouw van de tabellen geheel anders aanpakken of zit de oplossing in de query.

Ik hoop dat mijn vraag icm de link wat duidelijk is.
Gewijzigd op 30/03/2017 07:38:05 door J C
 
PHP hulp

PHP hulp

15/11/2024 20:33:52
 
Ward van der Put
Moderator

Ward van der Put

30/03/2017 08:13:08
Quote Anchor link
Vervang de INNER JOINs eens door LEFT JOINs?
 
J C

J C

30/03/2017 08:40:14
Quote Anchor link
Veranderd, maar nog geen verschil in de resultaten.
 
Ivo P

Ivo P

30/03/2017 09:20:24
Quote Anchor link
AND prod_sorteer.groupid='3'
AND prod_sorteer.groupid='4'

dat betekent, zoals je het nu opschrijft, dat je een record zoekt waarvoor geldt dat groupid zowel de waarde 3 als 4 heeft. Dat kan niet: groupid is 4 of 3 of 5 of 99, maar heeft nooit gelijktijdig 2 waarden.

Vraag: komt elk groupid maar 1 keer voor voor elk product?

Dan kun je namelijk tellen: je zoekt naar producten die groupid 3 of 4 hebben, en als je dan vervolgens telt hoeveel je er vond per product, moeten het er precies 2 zijn.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
SELECT
  producten.idproduct AS id,
  producten.productlink,
  producten.prijs,
  prod_omschrijving.producttitel,  
  prod_categorie.idcategorieen, merk.merknaam
FROM producten
INNER JOIN merk ON producten.idmerk=merk.idmerk
WHERE producten.groupid IN (3,4)
GROUP BY id, productlink, prijs, producttitel, merknaam
HAVING COUNT(1) = 2


zou je producten zoeken die in 3, 4, 6 en 99 zitten, dan moet count gelijk zijn aan 4

Toevoeging op 30/03/2017 10:15:09:

ah ik zie dat groupid bij jouw setup in een andere tabel zit.
De join kan er ook nog wel bij.

maar het gaat in mijn voorbeeldje even om het idee: tellen en zorgen dat je als aantal 2 vindt met HAVING
 
J C

J C

30/03/2017 23:25:24
Quote Anchor link
Maar in mijn geval komt het dus ook voor dat een product maar 1 groupid heeft.
In het voorbeeld van de website is het zo dat er bij deze producten 2 groupid kunnen worden gevraagd, maar soms wil de bezoeker alleen alle producten zijn met groupid4

En dan zijn er ook pagina's waarbij er er maar 1 groupid gevraagd kan worden.

Even concreet:

Een bezoeker kan op de website alleen vragen om vierkante truss en verder de zoekoptie "truss eigenschap" niet gebruiken.
Het idee is afgekeken van deze webshop:
https://www.rolight.nl/Home/Webshop/truss/truss
 
Ben van Velzen

Ben van Velzen

30/03/2017 23:36:09
Quote Anchor link
Omdat? Dat kan op de genoemde website toch ook gewoon?
Het idee van Ivo is zo gek nog niet, al moet je dat nog wel even aanpassen op je datamodel.
Hoeveel groupids je kan opvragen is niet relevant, want je bent zo te zien op zoek naar "hoeveelheid geselecteerde opties" ten opzichte van de matches. Je kunt heel eenvoudig in je menu bijhouden hoeveel opties je gekozen hebt en daar op inspelen, etc. Ik heb alleen de vraag wat je zou doen wanneer je meerdere opties zou kunnen selecteren (in een OR constructie, in de vorm van "het moet zwart zijn of wit" oid). Dan ontkom je niet aan het dynamisch opbouwen van je query.
Gewijzigd op 30/03/2017 23:36:38 door Ben van Velzen
 
J C

J C

30/03/2017 23:45:27
Quote Anchor link
Daar heb ik wel aan zitten denken, maar ik denk dat dit eenbeetje boven mijn pet gaat.
Misschien moet ik het toch maar bij 1 sorteer optie houden of iemand inhuren die hier meer van verstand van heeft.
Gewijzigd op 30/03/2017 23:46:18 door J C
 
Ben van Velzen

Ben van Velzen

30/03/2017 23:56:45
Quote Anchor link
Voor zoiets (zeker als je minder kennis hebt) kan het raadzaam zijn om naar een bestaande oplossing te kijken, zoals Magento. Is gratis, dus dat is geen belemmering. Het enige dat in de weg kan zitten is dat je wat specifieke serverconfiguratie nodig hebt om het echt snel te krijgen, maar er zijn genoeg mensen die dat kunnen.
 
J C

J C

31/03/2017 00:02:48
Quote Anchor link
Das waar, maar is een beetje zwaar vooor een verhuurlijst.

Het wordt ook geen webshop, meer een lijst met eigen spullen, zodat mensen kunnen zien wat we in huis hebben.
 
Ben van Velzen

Ben van Velzen

31/03/2017 01:41:18
Quote Anchor link
Wat is het verschil tussen een webshop en verhuur? In de basis is het gelijk: je kunt niet verhuren wat je niet hebt; het enige echte verschil is dat je per definitie zaken die terug komen van de verhuur weer op voorraad hebt, wat in principe niet anders is dan de leadtime van een product, al is deze verschillend afhankelijk van de verhuurstatus van een product.

Het klinkt allemaal erg eenvoudig, al zijn er wat randgevallen.

Het is erg vooringenomen, maar ik houd mezelf aanbevolen als je een oplossing op maat wilt.
Gewijzigd op 31/03/2017 01:41:32 door Ben van Velzen
 
J C

J C

31/03/2017 02:00:27
Quote Anchor link
Het grote verschil is dat mensen niet hoeven af te rekenen, nettoprijzen zien wanneer je bent ingelogd, aantal gebruikersdagen kan opgeven naast het aantal huurdagen en tot slot het profiel wat behoorlijk uitgebreid is, waarbij het profiel ook weer geintegreerd is met onze medewerkerssysteem/boekingssyteem.

Ik heb wel eens gekeken naar een webshop, maar moest de software zover laten aanpassen, dat dit te kostbaar werd en bovendien erg kostbaar werd om nog te updaten als er weer een update komt.

Vandaar dat ik de software nu zelf wil bouwen, waarbij ik de moeilijk dingen zoals inlogsysteem en de dingen waar ik niet uit kom uit besteed aan freelance scripters.

Maar ik neem je aanbod graag aan, zou je mij een mailtje kunnen sturen? Mijn emailadres staat op de website, mocht je interesse hebben.
 
Ben van Velzen

Ben van Velzen

31/03/2017 02:29:51
Quote Anchor link
> Het grote verschil is dat mensen niet hoeven af te rekenen, nettoprijzen zien wanneer je bent ingelogd, aantal gebruikersdagen kan opgeven naast het aantal huurdagen en tot slot het profiel wat behoorlijk uitgebreid is, waarbij het profiel ook weer geintegreerd is met onze medewerkerssysteem/boekingssyteem.

Dit is alleen niet direct een verschil, maar een laag die over de standaardfunctionaliteit heen wordt geplaatst.
Ik wil hierin ook niet lullig doen, maar ik heb ook op deze website een profiel waarlangs ik bereikbaar ben; wanneer je iets wil ben ik beschikbaar, ik ben alleen niet bereid om vanuit mijn kant contact te zoeken, jouw vragen zijn allen van jouw kant. Dit geeft je ook een positie om te onderhandelen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.