mysql> select * from tabla_a;
+------+-------------+---------------+--------------+
| id | descripcion | precio_normal | precio_socio |
+------+-------------+---------------+--------------+
| 1 | uno | 11 | NULL |
| 2 | dos | NULL | 22 |
| 3 | tres | NULL | NULL |
| 4 | cuatro | 44 | 44 |
+------+-------------+---------------+--------------+
4 rows in set (0.00 sec)
mysql> select * from precios_normales;
+---------------+-----------------+--------+
| precio_normal | descripcion | precio |
+---------------+-----------------+--------+
| 11 | precio normal 1 | 10 |
| 44 | precio normal 4 | 25 |
+---------------+-----------------+--------+
2 rows in set (0.00 sec)
mysql> select * from precios_socios;
+--------------+----------------+--------+
| precio_socio | descripcion | precio |
+--------------+----------------+--------+
| 22 | precio socio 2 | 10 |
| 44 | precio socio 4 | 40 |
+--------------+----------------+--------+
2 rows in set (0.00 sec)
mysql> select
-> tabla_a.id, tabla_a.descripcion,
-> precios_normales.precio_normal, precios_normales.descripcion, precios_normales.precio,
-> precios_socios.precio_socio, precios_socios.descripcion, precios_socios.precio
-> from tabla_a
-> left join precios_normales on precios_normales.precio_normal = tabla_a.precio_normal
-> left join precios_socios on precios_socios.precio_socio = tabla_a.precio_socio
-> order by tabla_a.id;
+------+-------------+---------------+-----------------+--------+--------------+----------------+--------+
| id | descripcion | precio_normal | descripcion | precio | precio_socio | descripcion | precio |
+------+-------------+---------------+-----------------+--------+--------------+----------------+--------+
| 1 | uno | 11 | precio normal 1 | 10 | NULL | NULL | NULL |
| 2 | dos | NULL | NULL | NULL | 22 | precio socio 2 | 10 |
| 3 | tres | NULL | NULL | NULL | NULL | NULL | NULL |
| 4 | cuatro | 44 | precio normal 4 | 25 | 44 | precio socio 4 | 40 |
+------+-------------+---------------+-----------------+--------+--------------+----------------+--------+
4 rows in set (0.00 sec)
SELECT
...
CASE WHEN precio_normal.precio IS NOT NULL THEN precio_normal.precio ELSE precios_socios.precio END
...
FROM
...
- El CASE-WHEN no me funciona, me da error mysql, seguramente sea culpa mía. ¿Como sería exactamente
la sentencia?
CASE WHEN precio_normal.precio IS NOT NULL
THEN precio_normal.precio
ELSE precios_socios.precio
END
CASE WHEN condicion
THEN valor_si_la_condicion_es_verdadera
ELSE valor_si_la_condicion_es_falsa
END
- ¿Se podría ordenar por "precio_normal" y "precio_socio" como si fuera un solo
campo "precio" (order by "precio")