Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: 1mpuls0 en 8 Junio 2012, 00:14 am



Título: ¿Cómo hacer una consulta doble a una tabla?
Publicado por: 1mpuls0 en 8 Junio 2012, 00:14 am
Hola.
Necesito hacer una consulta para obtener dos valores de una misma tabla, pero  necesito que me los muestre en dos columnas.
Tengo la siguiente tabla (localidades).

+------+------------------+
| id   | nombre |
+------+------------------+
|    1 | Oviedo           |
|    2 | Girona           |
|    3 | Barcelona        |
+------+------------------+
(La verdad es que no he podido acomodar la tabla, alguien me puede apoyar con esto?).

Necesito que el resultado de la consulta muestre el nombre de la localidad en columnas.

+-----------+-------------------+
| localidad1  | localidad2             |
+-----------+-------------------+
|    Oviedo   | Girona                  |
+-----------+-------------------+

lo usual sería hacer la consulta "SELECT nombre_localidad FROM localidades WHERE id=1 OR id=2;", pero el resultado obviamente sería el siguiente:

+---------+
| nombre  |
+---------+
| Oviedo  |
| Girona    |
+--------+

Hay alguna manera de hacer lo que necesito?.

Gracias


Título: Re: ¿Cómo hacer una consulta doble a una tabla?
Publicado por: :ohk<any> en 8 Junio 2012, 05:11 am
Como quieres mostrar el resultado de la consulta.

Me imagino que con algun lenguaje como Php u otro no es cierto?

O quieres que la consulta se liste de ese modo en particular desde el SMBD que estes usando.


Título: Re: ¿Cómo hacer una consulta doble a una tabla?
Publicado por: :ohk<any> en 8 Junio 2012, 05:14 am
En caso de usar php, seria mas o menos asi:

Tu problema no radica en la consulta sql, mas bien en la forma en la que ordenas tu tabla al momento de mostrar los resultados.

Me imagino que con esto podrias arreglarlo:

Código
  1.  <tr>
  2.     <td> localidad1 </td>
  3.     <td> localidad2 </td>
  4.  </tr>
  5.  <tr>
  6.     <td> Oviedo (Aqui viene el codigo php que imprime el resultado de la consulta)  </td>
  7.     <td> Girona (Aqui viene el codigo php que imprime el resultado de la consulta)  </td>
  8.  </tr>

Que saldria asi:

+-----------+-------------------+
| localidad1  | localidad2     |
+-----------+-------------------+
|    Oviedo   | Girona           |
+-----------+-------------------+

Nose si es a esto que te refieres, pero espero que sea de ayuda.

Saludos


Título: Re: ¿Cómo hacer una consulta doble a una tabla?
Publicado por: 1mpuls0 en 8 Junio 2012, 05:47 am
Gracias ohk
Es precisamente lo que no quiero hacer (que por ahora tengo así), ya que siento que son muchas líneas de código para algo tan sencillo.

$setence1="Select *...";
$query1=mysql_query(...);
$array1=mysql_fetch_array(...);
$result1=$array1[];

$setence2="Select *...";
$query2=mysql_query(...);
$array2=mysql_fetch_array(...);
$result2=$array2[];

Pensé que existiría una forma de hacerlo en SMBD, pero si no existe (que quiero suponer que si la hay).

Saludos.


Título: Re: ¿Cómo hacer una consulta doble a una tabla?
Publicado por: Toxico en 10 Junio 2012, 03:38 am
Gracias ohk
Es precisamente lo que no quiero hacer (que por ahora tengo así), ya que siento que son muchas líneas de código para algo tan sencillo.

$setence1="Select *...";
$query1=mysql_query(...);
$array1=mysql_fetch_array(...);
$result1=$array1[];

$setence2="Select *...";
$query2=mysql_query(...);
$array2=mysql_fetch_array(...);
$result2=$array2[];

Pensé que existiría una forma de hacerlo en SMBD, pero si no existe (que quiero suponer que si la hay).

Saludos.

Hola, lo que tu quieres hacer es "pivot" de tablas, sql server y oracle tienen buen soporte para ello en mysql, la solución vendria hacer algo asi.

Código:
select 
(select nombre from localidades where id = 1) as localidad1,
(select nombre from localidades where id = 2) as localidad2
from localidades
limit 1

No es lo optimo pero se acerca algo.



Título: Re: ¿Cómo hacer una consulta doble a una tabla?
Publicado por: 1mpuls0 en 10 Junio 2012, 05:16 am
Gracias Toxico
La consulta me funciona.

Saludos.