Selectief selecteren

  • Onderwerp starter Onderwerp starter Hanno
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Hanno

Gebruiker
Lid geworden
9 feb 2009
Berichten
8
Beste lui,

Telkens lijk ik er in de buurt te komen, maar met de haven in zicht loop ik toch vast. Ik denk dat het niet gaat, maar ik wil nog een poging wagen.

Stel ik heb 10 records in een adressen SQL databestand. Bij het uitlezen wil ik zowel de naam, adres en woonplaats tonen, dus ik krijg 10 adressen. Maar als er bij één de woonplaats niet ingevuld is wil ik een afbeelding (of een tekst "geen woonplaats") daarvoor in de plaats tonen.
Met NULL of NOT NULL kom ik er niet uit, want dat laat dan negen of een adres zien en dat is niet de bedoeling.

help me uit m'n droom.
groeten
 
SELECT
CASE WHEN plaats = '' THEN 'Geen woonplaats' ELSE plaats
FROM
table

Zoiets?

Ik zou in ieder geval even googlen naar CASE in SQL, dan zou het wel moeten lukken.
 
Kun je niet beter gewoon IF gebruiken?

SELECT adres, IF(IS_NULL(plaats) , 'Geen plaats' , plaats), etc
FROM table
WHERE condition
 
Nog geen resultaat

Diverse varianten op onderstaande query geeft steeds als antwoord "niks"

<?
$sql ="SELECT Acars,Name IF(IS_NULL(Acars) , 'Geen Acars' , Wel Acars), FROM deplane_images WHERE image_id = '139'";

$res = mysql_query($sql);
if (mysql_num_rows($res) >= 1)
{
echo "";
while ($row = mysql_fetch_array($res)){
echo " $row[Name] $row[Acars]<br>";
}
echo "
";
}
else
{
echo "niks";
}
?>
 
Je sql is niet goed en volgens mij kan het "IF( IS_NULL() )" stukje nog iets makkelijker. Hierdoor kom je altijd bij 'else' uit en krijg je 'niks' als antwoord. Probeer deze eens:
PHP:
SELECT IFNULL( Acars, 'Geen Acars' ) AS Acars, Name
FROM   deplane_images
WHERE  image_id = '139'

Je krijgt dan 2 kolommen: Name en Acars, waarbij de kolom acars de tekst "geen acars" bevat als deze NULL is. Verder lijkt het me verstandig om na het uitvoeren van de query een "or die" te gebruiken. Dan krijg je in ieder geval een foutmelding wanneer er een fout in je query zit.
 
Ja, want als een query fout gaat, moet gelijk je hele script eruit klappen. Erg praktisch..

Je moet controleren of er resultaat is, zo nee: query printen en foutmelding vermelden. Eventueel loggen, maar van or die() wordt niemand wijzer.
 
>>Epic, zoals als jij het omschrijft lukt het nog niet. Moet ik iets wijzigen in de database?
 
>>Epic, zoals als jij het omschrijft lukt het nog niet. Moet ik iets wijzigen in de database?

Je hoeft niets te wijzigen in de database. Maar zonder een (fout-)melding blijft het speculeren over waar het fout gaat.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan