Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Unir Consultas Mysql

Estas en el tema de Unir Consultas Mysql en el foro de Mysql en Foros del Web. Que tal, tengo estas dos consultas, pero necesito sacar ambos resultados en una sola, son: Código PHP: SELECT provider_id ,  company_name ,  country ,  medical_speciality FROM provider ...
  #1 (permalink)  
Antiguo 05/10/2005, 14:29
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Unir Consultas Mysql

Que tal, tengo estas dos consultas, pero necesito sacar ambos resultados en una sola, son:

Código PHP:
SELECT provider_idcompany_namecountrymedical_speciality
FROM provider
WHERE active
='prospect'
ORDER BY ".$_GET['valor']." ".$_GET['orden']." 

Y


Código PHP:
SELECT status_2 from provider_call_log where provider_call_log_id IN
(SELECT Max(provider_call_log_idfrom provider_call_log where provider_id=".$_GET['provider_id']."

Gracias de Antemano,
  #2 (permalink)  
Antiguo 06/10/2005, 00:36
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Código:
SELECT P.provider_id, P.company_name, P.country, P.medical_speciality, C.status2 from provider P inner join provider_call_log_id C on P.Provider_id=C.Provider_Id where
C.provider_call_log_id IN (SELECT Max(provider_call_log_id) from provider_call_log where provider_id=".$_GET['provider_id'].") 
AND P.active='prospect'
Creo que es esto lo que buscas. Un saludo.
  #3 (permalink)  
Antiguo 06/10/2005, 14:37
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Muchisimas Gracias

Funciona así:


Código PHP:
SELECT P.provider_idP.company_nameP.countryP.medical_speciality
C.status_2 from provider P inner join provider_call_log C on P.Provider_id=C.Provider_Id where
C
.provider_call_log_id IN (SELECT Max(provider_call_log_id
from provider_call_log where provider_id='1126'
AND 
P.active='prospect' 

Pero sabes un detalle, me muestra solo una Fila, la que tiene el máximo provider_call_log_id, la ide es que me saque todos con su respectivo máximo, como



company_name___________country_______medical_speci ality_______status_2
__________________________________________________ _________________


Proveedor 1......................Argentina.........Oftalmolo gia...................estatus_1

Proveedor 2......................Chile...............Radiolo gia.......................estatus_2

Proveeor 3.......................Mexico.............Cardilo gia.......................estatus_X


En este moemnto solo tengo el Proveedor 1 porque está filtrado por el provider_id, he colocado provider_id=provider_id pero no sale....


Como se podrá Corregir ???

Gracias de Antemano.

Saludos.

Última edición por SOFIA_ME_GUSTA; 06/10/2005 a las 14:54
  #4 (permalink)  
Antiguo 06/10/2005, 15:46
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Ah, ok, pero para eso lo que necesitas es obtenerlo cmo parte de la consulta, no como elemento de selección, es decir, algo así:

Código:
SELECT P.provider_id, P.company_name, P.country, P.medical_speciality,
C.status_2,(SELECT Max(provider_call_log_id)
from provider_call_log where provider_id=P.Provider_Id)
 from provider P inner join provider_call_log C on P.Provider_id=C.Provider_Id P.active='prospect'
espero que te sirva
  #5 (permalink)  
Antiguo 06/10/2005, 17:27
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Primero que nada muchas gracias por la ayuda, Le adicioné un AND a la ultima comparación, fíjate como está saliendo, yo necesitaría que saliera solo una sola vez, es decir el del máximo,


Por ejemplo Pedro Perez tiene el máximo registro provider_call_log_id = 5 que corresponde a un status_2 igual a "Hot" ese es el unico registro que debería de salir.


De nuevo muchas Gracias.



  #6 (permalink)  
Antiguo 07/10/2005, 00:28
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Creo que ya he entendido bien lo que quieres hacer, (ha sido un fallo de sincronización)
Código:
SELECT P.provider_id, P.company_name, P.country, P.medical_speciality,
C.status_2, C.provider_call_log_id
 from provider P inner join provider_call_log C on P.Provider_id=C.Provider_Id WHERE P.active='prospect' AND 
C.provider_call_log_id = (SELECT Max(provider_call_log_id)
from provider_call_log where provider_id=P.Provider_Id)
  #7 (permalink)  
Antiguo 07/10/2005, 07:47
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Hola Master, Te debo una grande.......


Se me habia escapado un detalle, que en el listado deben salir también los que sólo son 'prospect' y no tienen ningún registro en "provider_call_log".................será posible ???
  #8 (permalink)  
Antiguo 07/10/2005, 08:21
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Pues claro hombre:

Código:
SELECT P.provider_id, P.company_name, P.country, P.medical_speciality,
C.status_2, C.provider_call_log_id
 from provider P inner join provider_call_log C on P.Provider_id=C.Provider_Id WHERE P.active='prospect' AND 
C.provider_call_log_id = (SELECT Max(provider_call_log_id)
from provider_call_log where provider_id=P.Provider_Id)
UNION
SELECT P.provider_id, P.company_name, P.country, P.medical_speciality,
NULL AS status_2, NULL as provider_call_log_id
 from provider P WHERE P.active='prospect' AND 
Provider_id not in (SELECT Distinct(Provider_id) from Provider_call_Log)
Si no te funciona así, pon ambos selects entre parentesis.

Suerte.
  #9 (permalink)  
Antiguo 07/10/2005, 09:39
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Funciona Perfecto !!!!!!!!!!!!!!!!!!!

Agradecimientos Personales José, dado el caso pongo a tu disposición mis escasos conocminetos de php + Bases de Datos + Diseño gráfico para cualquier cosas que necesites.

Quisera preguntarte ya otra cosa....

Donde aprendiste SQL o Qué libro me recomiendas ????

Gracias de nuevo Master.
  #10 (permalink)  
Antiguo 07/10/2005, 09:51
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Pues la verdad es que lo aprendí en la Unviersidad (el poli de Valencia) y me gusto porque fue una de las pocas asignaturas que les veia utilidad. El libro que he utilizado es el que me recomendaron en la Uni, pero lo toque muy poco, pero si lo rescato del montón te digo cual es (me suena de un Mcraw Hill o algo asi), pero ya te digo que lo toque bien poco, más bien práctica y más practica.

Un saludo
  #11 (permalink)  
Antiguo 07/10/2005, 09:54
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
La ultima Ayuda...

Ok Master, Abusando Nuevamente, me falta una utilma cosa, y es ver todo esto según el sales_manager que es un campo de Provider, sería P.sales_manager

Por ejemplo para ver los de 'Pedro Perez', no sé onde se pondría el filtro ???

Inmensas Gracias.


Código PHP:
SELECT P.provider_idP.company_nameP.countryP.medical_speciality,
C.status_2C.provider_call_log_id
 from provider P inner join provider_call_log C on P
.Provider_id=C.Provider_Id WHERE P.active='prospect' AND 
C.provider_call_log_id = (SELECT Max(provider_call_log_id)
from provider_call_log where provider_id=P.Provider_Id)
UNION
SELECT P
.provider_idP.company_nameP.countryP.medical_speciality,
NULL AS status_2NULL as provider_call_log_id
 from provider P WHERE P
.active='prospect' AND 
Provider_id not in (SELECT Distinct(Provider_idfrom Provider_call_Log
  #12 (permalink)  
Antiguo 07/10/2005, 10:01
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Ah ay lo resolví...

Ah pero hombre................se me está pegando tu SQL...je, je. ya lo he resuelto...

Código PHP:
SELECT P.provider_idP.company_nameP.countryP.medical_specialityP.sales_managerC.status_2C.provider_call_log_id
FROM provider P inner join provider_call_log C on P
.Provider_id=C.Provider_Id
WHERE P
.active='prospect'  AND  P.sales_manager='Pedro Perez' AND
C.provider_call_log_id = (SELECT Max(provider_call_log_idfrom provider_call_log 
where provider_id
=P.Provider_IdUNION SELECT P.provider_idP.company_nameP.countryP.medical_specialityP.sales_managerNULL AS status_2NULL as provider_call_log_id  from provider P WHERE P.active='prospect' AND P.sales_manager='Pedro Perez' AND  Provider_id not in (SELECT Distinct(Provider_idfrom Provider_call_Log
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:23.