selectie aanpassen als IS NULL

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marijn Struijlaart

Marijn Struijlaart

16/04/2012 19:08:03
Quote Anchor link
hoi allemaal

ik ben bezig met een database voor cocktailrecepten. hierbij kan je een foto toevoegen, maar dat is niet verplicht. Nu wil ik de gegevens uit de tabel halen om ze weer te geven, maar dat lukt alleen als er een id is aangegeven voor de afbeelding (verwijst naar een andere tabel met afbeeldingen). mijn query ziet er nu zo uit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
SELECT P.path, cocktailnaam, cocktailtype, glassname, username, C.description
FROM glassware G, cocktails C, users U, pictures P  
WHERE C.cocktailid = 2
AND C.glassid = G.glassid
AND C.userid = U.userid
AND IF(C.pictureid IS NULL, P.path = 'default.png', C.pictureid = P.pictureid)
?>


is het mogelijk om in het geval dat er gen id is, de kolom path te verklaren zodat ik kan doorverwijzen naar een lege afbeelding

edit: de 2, van cocktailid = 2 is in werkelijkheid variabel (php)
Gewijzigd op 16/04/2012 19:19:38 door Marijn Struijlaart
 
PHP hulp

PHP hulp

06/11/2024 04:13:53
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

16/04/2012 19:15:15
Quote Anchor link
Zet de if statement in de SELECT list ipv in the WHERE clause.
Let wel jouw joins zijn impliciet dus ALTIJD INNER JOINS
 
Marijn Struijlaart

Marijn Struijlaart

16/04/2012 19:27:50
Quote Anchor link
aha dus zo

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
SELECT IF(C.pictureid IS NULL, 'default.png' ,path) AS path, cocktailnaam, cocktailtype, glassname, username, C.description
FROM glassware G, cocktails C, users U, pictures P
WHERE C.cocktailid = 1
AND C.glassid = G.glassid
AND C.userid = U.userid
AND (P.pictureid = C.pictureid OR C.pictureid IS NULL)
?>


dit geeft de goede waarden in ieder geval

edit: geeft niet de goede waarden als er meerdere waarden voor pictureid in de tabel staan
edit2: laatste SQL regel toegevoegd, zorgt ervoor dat bij NOT NULL waarden er maar 1 waarde uitkomt. bij niet gedefinieerde geeft het nog wel meerdere.
Gewijzigd op 16/04/2012 19:37:28 door Marijn Struijlaart
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

16/04/2012 19:48:35
Quote Anchor link
Dat kan kloppen: je joined 4 tabellen terwijl er maar 3 in de WHERE staan dus in pricipe heb je dan een cross join.
Je opbouw van de tabellen is niet goed, als een coctail meerdere foto's kan hebben hoort de pictureid niet in die tabel, anders kan je gewoon het pad naar de foto in de cocktails tabel opnemen.

PS
Dit gaat over drank, dan ben ik extra alert :-P
 
Marijn Struijlaart

Marijn Struijlaart

16/04/2012 20:05:33
Quote Anchor link
Ik heb die tabel afgesplitst omdat ook de tabellen ingredients, garnering etc een afbeelding kunnen hebben. die heb ik allemaal gelinkt aan de tabel pictures zodat ik een AI kan gebruiken. ik kan dit trouwens ook heel simpel oplossen door LIMIT 0,1 toe te voegen omdat ik maar van 1 cocktail de gegevens nodig heb
 



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.