Cita: Ya sé que no tiene mucho sentido tener estas dos tablas
Totalmente equivocado: Eso es normalización de BBDD, y si, el stock debe ir en una tabla diferente de la descripcion del producto. Lo que si no tiene sentido es que pongas un ID propio a la tabla stock si el producto se maneja con un stock único por cada producto.
Cita: Necesito una consulta que me muestre todos los registros ordenador por el precio, pero que deje los productos sin stock al final, es decir que los muestre, pero los deje los últimos, los que tienen stock tiene que mostrarlos primero y ordenados por el precio.
Eso se hace con un UNION ALL, donde el primer SELECT busca los que tienen stock y el segundo los que no lo tienen.
Código SQL:
Ver originalSELECT *
FROM
(SELECT id_producto, nombre, stock
FROM producto P INNER JOIN stock S ON P.id = S..id_producto
WHERE stock > 0
ORDER BY S.precio ASC, S.sotck DESC) T1
UNION ALL
SELECT *
FROM
(SELECT id_producto, nombre, IFNULL(stock, 0) stock
FROM producto P LEFT JOIN stock S ON P.id = S..id_producto
WHERE stock = 0 OR stock IS NULL
ORDER BY S.precio ASC) T2