Mostrando entradas con la etiqueta SQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta SQL. Mostrar todas las entradas

viernes, 24 de abril de 2009

SQL interesantes

SQL de utilidad...

Para modificar un campo de una tabla A relacionando por campo clave de una tabla B:

UPDATE tablaA
SET tablaA.valorACambiar = valor
WHERE tablaA.valorClave IN (SELECT tablaB.valorClave FROM tablaB WHERE {condiciones where tablaB})
AND {condiciones where tablaA}

Para modificar un campo de una tabla A con un valor de otra tabla B. (Relacion 1 a 1)

UPDATE tablaA INNER JOIN tablaB ON (tablaA.valorClave = tablaB.valorClave)
SET tablaA.valorACambiar = tablaB.valorDeOrigen
WHERE {condiciones adicionales sobre tablaA} AND/OR {condiciones adicionales sobre tablaB}

creo que esta segunda posibilidad tambien sería válida:

UPDATE tablaA
SET tablaA.valorACambiar =
(SELECT tablaB.valorDeOrigen FROM tablaB WHERE tablaA.valorClave = tablaB.valorClave AND/OR {condiciones adicionales sobre tablaB})
WHERE {condiciones adicionales sobre tablaA}


Para realizar consultas sobre tablas:
Selects anidados (este tipo de select solo permite obtener resultados de la tabla definida en la clausula FROM)

SELECT tablaA.*
FROM tablaA
WHERE tablaA.valorClave IN
(SELECT tablaB.valorClave FROM tablaB WHERE {condiciones where tablaB})
AND/OR {condiciones where tablaA}


Selects con INNER JOIN (relacion 1 a 1)

SELECT tablaA.*, tablaB.*
FROM tablaA INNER JOIN tablaB ON (tablaA.valorClave = tablaB.valorClave)
WHERE {condiciones adicionales sobre tablaA} AND/OR {condiciones adicionales sobre tablaB}

Selects con LEFT JOIN (relacion 1 a N)
SELECT tablaA.*, tablaB.*
FROM tablaA LEFT JOIN tablaB ON (tablaA.valorClave = tablaB.valorClaveMultiple)
WHERE {condiciones adicionales sobre tablaA} AND/OR {condiciones adicionales sobre tablaB}

Añadir un contador de fila
SELECT (SELECT COUNT(*) FROM myTable T1 WHERE T1.UniqueField<=T2.UniqueField) as RowNum, T2.OtherField
FROM myTable T2
ORDER By T2.UniqueField