where clausule met meerdere waarden
Ik ben een PHP beginner en ik heb een probleem.
Ik bebruik deze query om gegevens van de database te halen:
$split_eventsIMAGEID2 = explode(" ",$events_row['events_image_id']);
$sql = "SELECT i.image_id, i.image_thumb_file, i.image_media_file, e.events_id, e.events_sponsors, e.events_hits, e.events_plaats, e.events_land, e.events_thumb, e.events_name, e.events_description, e.events_datum1, e.events_datum2, e.events_days, e.events_adres, e.events_contact, e.events_image_id, e.events_user_id, i.cat_id, i.user_id, i.image_name, i.image_date, i.image_active, i.image_hits".$additional_sql.", c.cat_name".get_user_table_field(", u.", "user_name")."
FROM (".EVENTS_TABLE." e, ".IMAGES_TABLE." i, ".CATEGORIES_TABLE." c)
LEFT JOIN ".USERS_TABLE." u ON (".get_user_table_field("u.", "user_id")." = i.user_id)
// Deze line wil ik verbeteren:
WHERE i.image_id = '$split_eventsIMAGEID2[0]' or i.image_id = '$split_eventsIMAGEID2[1]' or i.image_id = '$split_eventsIMAGEID2[2]' or
i.image_id = '$split_eventsIMAGEID2[3]' or i.image_id = '$split_eventsIMAGEID2[4]' or i.image_id = '$split_eventsIMAGEID2[5]' or
i.image_id = '$split_eventsIMAGEID2[6]' or i.image_id = '$split_eventsIMAGEID2[7]' or i.image_id = '$split_eventsIMAGEID2[8]' or
i.image_id = '$split_eventsIMAGEID2[9]' or i.image_id = '$split_eventsIMAGEID2[10]' or i.image_id = '$split_eventsIMAGEID2[11]' or
i.image_id = '$split_eventsIMAGEID2[12]' or i.image_id = '$split_eventsIMAGEID2[13]' or i.image_id = '$split_eventsIMAGEID2[14]'
//------------------------------------------------
GROUP BY i.image_id
ORDER BY i.image_id ASC";
$result = $site_db->query($sql);
$num_rows = $site_db->get_numrows($result);
Dus mijn vraag is:
Wat ik moek doen als ik meer dan 100 ($split_eventsIMAGEID2[xxx]') heb?
Bij voorbaat dank,
Cruxy
Gewijzigd op 01/01/1970 01:00:00 door Sara Z
GROUP BY gebruik je bij agregate functies en die staan niet in jouw query. Daarnaast zul je allen velden in het SELECT-gedeelte die niét in een agregate functie staan, in de GROUP BY moeten noemen.
Verder vind ik het vaag dat de tabelnamen als variabelen zijn gedefinieerd, dat belooft niet al te veel goeds. Uitzonderingen daargelaten.
Eigenlijk werkt de query perfect. Ik heb het in verschillende voorbeelden getest en ik krijg altijd het gewenste resultaat.
Mijn vraag was: hoe kan ik the WHERE regel verbeteren.
WHERE i.image_id = '$split_eventsIMAGEID2[0]' or i.image_id = '$split_eventsIMAGEID2[1]' or i.image_id = '$split_eventsIMAGEID2[2]' or
i.image_id = '$split_eventsIMAGEID2[3]' or i.image_id = '$split_eventsIMAGEID2[4]' or i.image_id = '$split_eventsIMAGEID2[5]' or
i.image_id = '$split_eventsIMAGEID2[6]' or i.image_id = '$split_eventsIMAGEID2[7]' or i.image_id = '$split_eventsIMAGEID2[8]' or
i.image_id = '$split_eventsIMAGEID2[9]' or i.image_id = '$split_eventsIMAGEID2[10]' or i.image_id = '$split_eventsIMAGEID2[11]' or
i.image_id = '$split_eventsIMAGEID2[12]' or i.image_id = '$split_eventsIMAGEID2[13]' or i.image_id = '$split_eventsIMAGEID2[14]'
Ik gebruik trouwens MySQL.
Alvast bedankt voor de support.
Gewijzigd op 01/01/1970 01:00:00 door Sara Z
Quote:
Dat is meer dan geluk dan wijsheid, er komt een moment dat het resultaat niet klopt. Waarschijnlijk zul je dan alleen even missen. Het is namelijk wiskundig onmogelijk en databases zijn gebaseerd op wiskunde, de verzamelingenleer.Eigenlijk werkt de query perfect. Ik heb het in verschillende voorbeelden getest en ik krijg altijd het gewenste resultaat.
Dat je MySQL gebruikt, wist ik al, anders was de query ook gewoon afgekeurd. Een goede database zal namelijk geen onmogelijke queries uitvoeren en niet zelf resultaten verzinnen. Dat is namelijk wat MySQL doet, willekeurig een resultaat oplepelen.
Tip: Stel MySQL maar eens in op STRICT-mode (ANSI), dan zul je zien dat ook MySQL deze query afkeurt. Ook de makers van MySQL weten wel dat het onzin is, vandaar dat ze hier vanaf willen...
Kortom, ga opnieuw beginnen en gooi bovenstaande query weg. Op een slechte dag ga je daarmee namelijk hopeloos de mist in.
Ok bedankt!