
29/11/2005, 13:05
|
 | | | Fecha de Ingreso: enero-2002 Ubicación: Madrid
Mensajes: 124
Antigüedad: 23 años, 3 meses Puntos: 0 | |
si pones
Select * from ((select a.id_item, a.id_comercio, a.tipo, a.marca, a.nombre, a.descripcion, b.pagos, b.precio, d.simbolo, c.nombre, c.ext, e.nombre, e.carpeta from ((((gc_items a left join gc_items_precios b on a.id_item = b.id_item and b.defecto = 1) left join gral_galerias_fotos c on c.id_galeria = a.id_galeria and c.orden = 1) left join gral_monedas d on d.id_moneda = d.id_moneda) inner join gc_comercios e on e.id_comercio = a.id_comercio) inner join gc_items_tapa f on f.id_item = a.id_item and f.orden < 4 where e.habilitado = 1 and a.id_rubro = " & id_rubro & " and b.precio is not null group by a.id_item order by length(c.nombre) desc, b.precio asc, a.nombre asc)
UNION
(select a.id_item, a.id_comercio, a.tipo, a.marca, a.nombre, a.descripcion, b.pagos, b.precio, d.simbolo, c.nombre, c.ext, e.nombre, e.carpeta from ((((gc_items a left join gc_items_precios b on a.id_item = b.id_item and b.defecto = 1) left join gral_galerias_fotos c on c.id_galeria = a.id_galeria and c.orden = 1) left join gral_monedas d on d.id_moneda = d.id_moneda) inner join gc_comercios e on e.id_comercio = a.id_comercio) inner join gc_items_tapa f on f.id_item = a.id_item and f.orden < 4 where e.habilitado = 1 and a.id_rubro = " & id_rubro & " and b.precio is null group by a.id_item order by length(c.nombre) desc, b.precio asc, a.nombre asc))
Lo que te va a hacer es sacar primero los que tengan b.precio<>null ordenados como tu los quieres y a continuacion los que tienen b.precio=0
Lo que hace union es concatenar el resultado de dos select uno a continuancion del otro.
Pruebalo. Creo que debería funcionar.
Saludos
__________________ "Hay que simplificar las cosas tanto como sea posible, pero no más".
Albert Einstein. |