Forum Clubic

Où est-ce que ma requête SQL coince ?

Bonjour à tous,

Je sollicite votre aide en cette fin d’année car j’ai besoin de créer une requête pour mon site et je ne comprends pas l’erreur retournée. Mon site gère des hôtels et j’ai besoin d’une requête SQL qui me retourne les chambres encore libres en laissant de côté celles occupées à une date valide. Voici comment j’ai procédé :


	SELECT r.resourceid, name,
	IF('2010-12-15' >= of.datebegin AND '2010-12-22' <= of.dateend, of.price, r.price) as price
	FROM wp_res_orders o
	INNER JOIN wp_res_orders_content oc ON (o.orderid = oc.orderid)
	RIGHT JOIN wp_res_resources r ON (oc.resourceid = r.resourceid)
	LEFT JOIN wp_res_offers of ON ( of.resourceid = r.resourceid)
	WHERE capacity > 0
	AND (('2010-12-15' < o.datebegin AND '2010-12-22' < o.datebegin) 
	OR ('2010-12-15' > o.dateend AND '2010-12-22' > o.dateend) OR (o.datebegin IS NULL AND o.dateend IS NULL))
	AND r.resourceid NOT IN ( 
		SELECT ord.datebegin, ord.dateend 
		FROM wp_res_orders ord
		INNER JOIN wp_res_orders_content oct ON (ord.orderid = oct.orderid)
		WHERE ord.datebegin = '2010-12-15' AND ord.dateend = '2010-12-22' )
	ORDER BY 1;

L’erreur retourné dans MySQL est “#1241 - Operand should contain 1 column(s)”. Je sais que l’erreur se situe au niveau de la sous-requête car auparavant la requête était fonctionnelle mais je me suis aperçu qu’elle ne permettait pas de se prémunir contre les double réservations sur une même chambre…

L’un de vous pourrait-il m’indiquer où j’ai fait une erreur de syntaxe ?

Merci beaucoup !

Ton not in n’est pas bon. A gauche (r.resourceid) tu as une colonne, à droite (ord.datebegin, ord.dateend) deux colonnes => impossible.

Arf oui j’avais pas du ce “one column” dans ce sens là, je cherchais plutôt avec des histoires de parenthèses…

Merci énormément !