AND y OR

M

mictlan31

Que tal! estoy tratando de hacer una consulta que en teoría debería usar ADN y OR, el problema es que sql no la suporta... alguien sabe como poder hacer esto??

la consulta seria mas o menos asi:
SELECT * FROM mitabla WHERE tipo_docto=1 OR tipo_docto=2 OR tipo_docto=3 AND tipo_docto=4;

Lo que he intentado es hacer primero la consulta de los OR y despues con una clave seleccionar todo de los documentos que sean de tipo 4 ... el problema es para recorrer un arreglo por renglones, lo he intentado con foreach pero me genera errores...

Alguien sabe cómo solucionar lo de los AND y OR ???? Saludos ! :confused:
 
M

mictlan31

Nuevamente....

Tengo un problema al querer utilizar la sentencia OR y AND en una consulta. Necesito seleccionar

los documentos que sean de tipo 1 ó 2 ó 3 y 4.
La consulta sería la siguiente:

SELECT * FROM seguimiento WHERE seg_tipo_docto=1 OR seg_tipo_docto=2 OR seg_tipo_docto=3 AND

seg_tipo_docto=4;

TABLA seguimiento

+---------+--------------+---------------+----------------+---------------+
| seg_cve | seg_cve_dest | seg_no_docto | seg_tipo_docto | seg_docto_est |
+---------+--------------+---------------+----------------+---------------+
| 1 | 2 | DSIS/1/2004 | 1 | 1 |
| 2 | 1 | ARG/2/2004 | 2 | 1 |
| 3 | 1 | ARG/3/2004 | 3 | 1 |
| 4 | 1 | OIOPDM/4/2004 | 3 | 1 |
| 5 | 3 | ARG/5/2004 | 3 | 1 |
| 6 | 1 | ARG/5/2004 | 4 | 1 |
| 7 | 2 | ARG/5/2004 | 4 | 1 |
+---------+--------------+---------------+----------------+---------------+

El problema es que en SQL no se puede combinar OR y AND.

Básicamente el tipo de documento 1 representa un circular, el tipo 2 un memorando y el tipo 3 un

oficio, el tipo 4 es un tipo de comentario que se hace en base en algun documento original (1, 2

ó 3).

Necesito tomar los documento originales y sus comentarios, por ejemplo: El documento que tiene

seg_cve=5 es de tipo 3 (oficio) y tambien tiene dos comentarios, seg_cve=6 y seg_cve=7. Espero

que se entienda.

Lo que he tratado de hacer es seleccionar el número de documento "seg_no_docto" de los documentos

de tipo 1 ó 2 ó 3, esa consulta colocarla en un arreglo e ir después comparando cada fila de la

consulta, es decir, En este caso selecionaríamos:

SELECT seg_cve, seg_no_docto, seg_tipo_docto FROM seguimiento WHERE seg_tipo_docto=1 OR

seg_tipo_docto=2 OR seg_tipo_docto=3;

+---------+---------------+----------------+
| seg_cve | seg_no_docto | seg_tipo_docto |
+---------+---------------+----------------+
| 1 | DSIS/1/2004 | 1 |
| 2 | ARG/2/2004 | 2 |
| 3 | ARG/3/2004 | 3 |
| 4 | OIOPDM/4/2004 | 3 |
| 5 | ARG/5/2004 | 3 |
+---------+---------------+----------------+

Colocandolo en un arreglo en el primer renglon quedaría todo lo relacionado con seg_cve=1, en el

segundo renglon todo lo relacionado a seg_cve=2 y asi susecivamente, tomando los números de

documento en una segunda consulta quiero seleccionar los documentos de tipo 4 (seg_tipo_docto=4)

de cada uno de los renglones, si es que tienen. Verificar si DSIS/1/2004 tiene un tipo 4 y cada

renglon susecivamente... el problema es que no se cómo recorrer los reglones de un arreglo.

Espero que alguien me pueda ayudar, ya van varias semanas que he tratado de sacar esto y no he

podido... he probado con next(), con un ciclo foreach.

Espero no haberlos enrredado, y gracias por la atención. Nos vemos !
 
M

mictlan31

Nuevamente....

Tengo un problema al querer utilizar la sentencia OR y AND en una consulta. Necesito seleccionar

los documentos que sean de tipo 1 ó 2 ó 3 y 4.
La consulta sería la siguiente:

SELECT * FROM seguimiento WHERE seg_tipo_docto=1 OR seg_tipo_docto=2 OR seg_tipo_docto=3 AND

seg_tipo_docto=4;

TABLA seguimiento

+---------+-----------------------+-----------------------------+-----------------------+----------------------+
| seg_cve | seg_cve_dest | seg_no_docto | seg_tipo_docto | seg_docto_est |
+---------+-----------------------+-----------------------------+-----------------------+----------------------+
| 1 | 2 | DSIS/1/2004 | 1 | 1 |
| 2 | 1 | ARG/2/2004 | 2 | 1 |
| 3 | 1 | ARG/3/2004 | 3 | 1 |
| 4 | 1 | OIOPDM/4/2004 | 3 | 1 |
| 5 | 3 | ARG/5/2004 | 3 | 1 |
| 6 | 1 | ARG/5/2004 | 4 | 1 |
| 7 | 2 | ARG/5/2004 | 4 | 1 |
+---------+-----------------------+-----------------------------+-----------------------+-----------------------+

El problema es que en SQL no se puede combinar OR y AND.

Básicamente el tipo de documento 1 representa un circular, el tipo 2 un memorando y el tipo 3 un

oficio, el tipo 4 es un tipo de comentario que se hace en base en algun documento original (1, 2

ó 3).

Necesito tomar los documento originales y sus comentarios, por ejemplo: El documento que tiene

seg_cve=5 es de tipo 3 (oficio) y tambien tiene dos comentarios, seg_cve=6 y seg_cve=7. Espero

que se entienda.

Lo que he tratado de hacer es seleccionar el número de documento "seg_no_docto" de los documentos

de tipo 1 ó 2 ó 3, esa consulta colocarla en un arreglo e ir después comparando cada fila de la

consulta, es decir, En este caso selecionaríamos:

SELECT seg_cve, seg_no_docto, seg_tipo_docto FROM seguimiento WHERE seg_tipo_docto=1 OR

seg_tipo_docto=2 OR seg_tipo_docto=3;

+---------+---------------+----------------+
| seg_cve | seg_no_docto | seg_tipo_docto |
+---------+---------------+----------------+
| 1 | DSIS/1/2004 | 1 |
| 2 | ARG/2/2004 | 2 |
| 3 | ARG/3/2004 | 3 |
| 4 | OIOPDM/4/2004 | 3 |
| 5 | ARG/5/2004 | 3 |
+---------+---------------+----------------+

Colocandolo en un arreglo en el primer renglon quedaría todo lo relacionado con seg_cve=1, en el

segundo renglon todo lo relacionado a seg_cve=2 y asi susecivamente, tomando los números de

documento en una segunda consulta quiero seleccionar los documentos de tipo 4 (seg_tipo_docto=4)

de cada uno de los renglones, si es que tienen. Verificar si DSIS/1/2004 tiene un tipo 4 y cada

renglon susecivamente... el problema es que no se cómo recorrer los reglones de un arreglo.

Espero que alguien me pueda ayudar, ya van varias semanas que he tratado de sacar esto y no he

podido... he probado con next(), con un ciclo foreach.

Espero no haberlos enrredado, y gracias por la atención. Nos vemos !
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba