c'est le code que im utilisant
$Last_Video = $db->fetch_all('
SELECT VID, thumb
FROM video
WHERE VID IN (
SELECT VID
FROM video
WHERE title LIKE "%'.$Channel['name'].'%"
ORDER BY viewtime DESC
LIMIT 5)
ORDER BY Rand()
LIMIT 1
');
C'est l'erreur que me donne
Message: Error during SQL execution: SELECT VID, thumb FROM video WHERE VID IN ( SELECT VID FROM video WHERE title LIKE "%funny%" ORDER BY viewtime DESC LIMIT 5) ORDER BY Rand() LIMIT 1<br />
MySQL Error: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'<br />
MySQL Errno: 1235
comment puis-je résoudre ce problème? son autre moyen de le faire ... donc je ne reçois pas l'erreur ...
Au lieu d'utiliser IN, vous pouvez utiliser JOIN
SELECT v.VID, v.thumb
FROM video AS v
INNER JOIN
(SELECT VID
FROM video
WHERE title LIKE "%'.$Channel['name'].'%"
ORDER BY viewtime DESC
LIMIT 5) as v2
ON v.VID = v2.VID
ORDER BY Rand()
LIMIT 1
Vous pouvez utiliser ci-dessous pour contourner cette erreur.
$Last_Video = $db->fetch_all('
SELECT VID, thumb
FROM video
WHERE VID IN (select * from (
SELECT VID
FROM video
WHERE title LIKE "%'.$Channel['name'].'%"
ORDER BY viewtime DESC
LIMIT 5) temp_tab)
ORDER BY Rand()
LIMIT 1
');
Vous n'avez pas besoin d'une sous-requête ici. Essaye ça:
SELECT VID, thumb
FROM video
WHERE title LIKE "%'.$Channel['name'].'%"
ORDER BY Rand() DESC
LIMIT 1
Dans MySQL 5.0.26 et versions ultérieures, vous obtiendrez une erreur:
MySQL ne prend pas en charge LIMIT dans les sous-requêtes de certains opérateurs de sous-requêtes:
Pourquoi vous ne pouvez pas utiliser simple:?
SELECT v.VID, v.thumb
FROM video as v
WHERE title LIKE "%'.$Channel['name'].'%"
ORDER BY viewtime DESC
LIMIT 5
que pour les sous-requêtes ici?