WHERE conditie zorgt voor 0 resultaten
Om mijn resultaten nog beter naar voren te krijgen heb ik vandaag een WHERE conditie toegevoegd aan mijn query.
Echter na deze wijziging in de query krijg ik helemaal geen resultaten meer.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$sql = "
SELECT
$relation.menuid,
$food_table.name foodname,
$food_table.price foodprice,
$food_table.foodorder foodorder,
$food_table.veget foodveget,
$food_table.vegan foodvegan,
$groups_table.catorder,
GROUP_CONCAT($groups_table.catname ORDER BY $groups_table.catname SEPARATOR ', ') foodcats
FROM
$relation
JOIN $food_table ON $relation.menuid = $food_table.id
JOIN $groups_table ON $relation.groupid = $groups_table.id
GROUP BY $relation.menuid
ORDER BY $groups_table.catorder, $groups_table.catname, foodorder, foodname
//deze regel heb ik toegevoegd
WHERE $groups_table.type=1
";
?>
$sql = "
SELECT
$relation.menuid,
$food_table.name foodname,
$food_table.price foodprice,
$food_table.foodorder foodorder,
$food_table.veget foodveget,
$food_table.vegan foodvegan,
$groups_table.catorder,
GROUP_CONCAT($groups_table.catname ORDER BY $groups_table.catname SEPARATOR ', ') foodcats
FROM
$relation
JOIN $food_table ON $relation.menuid = $food_table.id
JOIN $groups_table ON $relation.groupid = $groups_table.id
GROUP BY $relation.menuid
ORDER BY $groups_table.catorder, $groups_table.catname, foodorder, foodname
//deze regel heb ik toegevoegd
WHERE $groups_table.type=1
";
?>
Ik wil de resultaten dus filteren als kolom type het cijfer 1 bevat.
Gewijzigd op 03/03/2020 13:24:45 door Jop B
Echo je $sql eens, want er staan een hoop variabelen in, waarvan er mogelijk een niet goed gevuld wordt?
De tabelnamen staan in variabelen omdat het een plugin betreft.
Zodra ik de WHERE conditie eruit laat krijg ik alle records terug.
Ik gok dat die WHERE in je JOIN hoort.
Jep die groups table zit in een JOIN op regel 15
syntax van je SELECT-statement klopt niet. De WHERE-conditie staat op de verkeerde plaats. Dit zorgt ervoor dat je SELECT-query false retourneert in PHP als je deze probeert uit te voeren. En daarbij lijkt het er dus op dat je geen (goede of iig niet afdoende) foutafhandeling in de query-uitvoer hebt zitten omdat het niet wordt opgepikt dat je queries de verkeerde vorm hebben.
De Heb de WHERE conditie verplaatst in de query. ik krijg nu het gewenste resultaat :-)
WHERE komt als eerst volgende achter de laatste JOIN
Je had natuurlijk ook de query kunnen echo'n en in je SQL-programma (bijv. phpMyAdmin) gooien.
Maar goede fout-afhandeling is natuurlijk het beste.