Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Subqueries complejos? (http://www.forosdelweb.com/f86/subqueries-complejos-884940/)

zoomguy 10/02/2011 16:11

Subqueries complejos?
 
Hola

Es mi primer post por aquí y es referente a MySQL

Tengo una tabla con la siguiente estructura:

Código:

+----------+------------+------+-----+---------+----------------+
| Field    | Type      | Null | Key | Default | Extra          |
+----------+------------+------+-----+---------+----------------+
| ID      | bigint(20) | NO  | PRI | NULL    | auto_increment |
| USER_ID  | bigint(20) | NO  | MUL | NULL    |                |
| FIELD_ID | bigint(20) | NO  | MUL | NULL    |                |
| VALUE    | text      | NO  |    | NULL    |                |
+----------+------------+------+-----+---------+----------------+

Cuyos valores son parecidos a estos:

Código:

+----+---------+----------+----------------------+
| id | user_id | field_id | substr(value, 1,20)  |
+----+---------+----------+----------------------+
|  9 |      2 |        2 | Medicos Familiares  |
| 10 |      2 |        3 | Calle del mal 666    |
| 11 |      2 |        4 | When I was 18 I went |
| 12 |      2 |        5 | The details of my li |
| 13 |      2 |        6 | 25                  |
| 15 |      2 |        8 | 7340                |
| 16 |      2 |        9 | Distrito Federal    |
| 17 |      2 |      10 |                      |
| 18 |      2 |      11 | Gustavo A. Madero    |
| 19 |      2 |      12 | La Laguna Ticomßn    |
| 20 |      2 |        7 | http://xxx/ |
| 36 |      2 |      13 | 11-22-33-44-55      |
| 37 |      2 |      14 | 99-88-77-66-55      |
| 62 |      2 |      15 |                      |
| 63 |      2 |      16 |                      |
| 24 |      3 |        2 | Alergologos,Algelogo |
| 25 |      3 |        4 | We had completed the |
| 26 |      3 |        5 | <p>We had completed  |
| 27 |      3 |        6 | 20                  |
| 28 |      3 |        7 | http://xx.ax/ |
| 29 |      3 |        9 | Chiapas              |
| 30 |      3 |      11 | Juarez              |
| 31 |      3 |      12 | Hidalgo              |
| 32 |      3 |        8 | 29514                |
| 33 |      3 |        3 | Mi casa #25          |
| 34 |      3 |      13 | 55-55-55-66-66      |
| 35 |      3 |      14 | 55-66-77-88-99      |
+----+---------+----------+----------------------+

El campo field_id esta referenciado a datos de otra tabla en donde existen reglas y demas cosas para dicho campo asi como su nombre

Con esta estructura logro hacer una consulta simple sabiendo el field_id y el valor

Código MySQL:
Ver original
  1. select * from table where field_id = 2 and value like "%aler%"

esto me regresa:
Código:

+----+---------+----------+---------------------------------------------------------+
| ID | USER_ID | FIELD_ID | VALUE                                                  |
+----+---------+----------+---------------------------------------------------------+
| 24 |      3 |        2 | Alerg¾logos,Alg¾logos,Anestesi¾logos,MÚdicos Familiares |
| 50 |      5 |        2 | Alergologos pediatras                                  |
+----+---------+----------+---------------------------------------------------------+

Todo bien hasta aquí

Ahora el field_id #2 es especialidad y el field_9 es un estado

Mi pregunta es como podre hacer una consulta "compleja", es decir seleccionar el user_id que sea del estado chiapas pero que tambien tenga la especialidad de alergologo?

Espero me puedan ayudar

Gracias.

jurena 10/02/2011 16:17

Respuesta: Subqueries complejos?
 
SELECT user_id, COUNT(DISTINCT field_id) dato FROM tutabla WHERE field_id IN(2, 9) GROUP BY user_id HAVING dato = 2

zoomguy 10/02/2011 17:40

Respuesta: Subqueries complejos?
 
Hola jurena,

Gracias pero sabes no me queda clara la consulta, en donde hago la comparacion para el estado?

es decir, algo como:

Seudo SQL
Código MySQL:
Ver original
  1. select user_id donde el field_id = 2 con valor como "%algo%" Y field_id=9 con valor como "%chiapas%"

cheers!!

jurena 11/02/2011 10:08

Respuesta: Subqueries complejos?
 
SELECT user_id, COUNT(*) dato FROM tutabla WHERE value LIKE '%alerg%' OR value LIKE 'Chiapas' GROUP BY user_id HAVING dato = 2


La zona horaria es GMT -6. Ahora son las 09:07.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2024, Jelsoft Enterprises Ltd.