MySQL Forums
Forum List  »  Spanish

Re: ayuda con OR !!!
Posted by: Gonzalo Garcia Correas
Date: October 17, 2007 05:48AM

En primer lugar, veo que tienes un campo identificador (id) en ambas tablas, y que solamente vas a contar aquellos registros que aparezcan con su respectivo ID en AMBAS tablas, por lo que le puedes decir a MySQL que en prinicpio filtre solamente aquellaos registros que coincidan:

SELECT * FROM TABLA1 INNER JOIN TABLA2 USING (ID);

Esto te devolverá una tabla en la que solamente estarán los registros que coincidan en el ID. Como aclaración: el NOMBRE del campo ID debe ser IGUAL en ambas tablas. sino, deberás usar:


SELECT * FROM TABLA1 T1 INNER JOIN TABLA2 T2 ON T1.ID1 = T2.ID2;

(Estoy usando los alias T1 y T2 para acortar el texto)

Una vez hecho esto, puedes seleccionar de esta tabla el subconjunto que quieras:

SELECT COUNT(*) FROM TABLA1 T1 INNER JOIN TABLA2 T2 USING (ID) WHERE T1.CAMPO1 = 1 AND T1.CAMPO1 = T2.CAMPO2 AND T2.CAMPO3 = 3;

Ahora bien, considerando que T1.CAMPO1 es igual a T2.CAMPO1, si el nombre de ambos campos es igual, podrías sumarlo al JOIN:

SELECT COUNT(*) FROM TABLA1 T1 INNER JOIN TABLA2 T2 USING (ID,CAMPO1) WHERE T1.CAMPO1 = 1 AND T2.CAMPO3 = 3;

Como nota final, el "=" no es eficiente para hacer la selección del predicado, es mejor escribirlo:

SELECT COUNT(*) FROM TABLA1 T1 INNER JOIN TABLA2 T2 USING (ID,CAMPO1) WHERE T1.CAMPO1 IN (1) AND T2.CAMPO3 IN (3);

la cláusula IN es más rápida en el WHERE que el "=" y te permite hacer la comparación de un campo con un conjunto de valores rápidamente, por ejemplo: IN (1,3,5,9,75)

Options: ReplyQuote


Subject
Views
Written By
Posted
2980
October 05, 2007 06:06PM
2336
October 06, 2007 02:03PM
Re: ayuda con OR !!!
2403
October 17, 2007 05:48AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.