Foros del Web » Programando para Internet » PHP »

distinguir datos de dos tablas?¿

Estas en el tema de distinguir datos de dos tablas?¿ en el foro de PHP en Foros del Web. bueno he estado mirando y creo(solo creo) que lo que quiero hacer no se puede en SQL ^^u asi que supongo que en php si ...
  #1 (permalink)  
Antiguo 23/08/2004, 09:52
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
distinguir datos de dos tablas?¿

bueno he estado mirando y creo(solo creo) que lo que quiero hacer no se puede en SQL ^^u asi que supongo que en php si se podra.

Mi problema es este,tengo un index que realiza una busqueda por una letra alfabetica,de manera que si pulsas en la S muestra los nombres que empiezan por la S,el problema viene cuando quiero coger los datos de dos filas que estan en la misma tabla,pero la forma de relacionarlos es mediante el nombre....bueno pondre un ejemplo para que em entendais mejor :D

tabla1_________:
nombre
datos1
datos2
datos3


tabla_2_________:
nombre
datos1
datos2
datos3

en caso de que datos1 en ambas tablas sea igual no muestre nada pero en caso de que sean distintas muestre el resultado de ambas asi:


resultado:
nombre
datos1_tabla_1-datos1_tabla2
datos2_tabla_1
datos3_tabla1


no se si consegui expliarme :D espero que si bueno espero que me podais ayudar es algo que me trae loco hace dias
  #2 (permalink)  
Antiguo 23/08/2004, 10:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues si que se puede hacer en SQL .. se denomina "alias"

Un ejemplo:
SELECT tabla1.nombre as minombre,tabla2.nombre as otronombre FROM tabla1,tabla2 ....

Y en "PHP" al aplicar tu mysql_fech_array() o similar .. lo obtendrás en el $row['nombre_del_alias_que_pusistes']

Un saludo,
  #3 (permalink)  
Antiguo 23/08/2004, 10:15
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
Cluster me has dejado asi mira que he buscado y no encontre nada sobre como hacerlo gracias ahora mismo lo pruebo
  #4 (permalink)  
Antiguo 23/08/2004, 10:20
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
muchas gracias cluster :D me ha servido de mucho :D pero tengo otra preguntita :$ y si las dos filas estan en la misma tabla y se llaman igual las filas(osea que es la misma fila,pero de dos datos distintos que solo tienen en comun el nombre)?como lo hago entonces?:(

P.D: Muchas gracias cluster nunca me voy a dormir sin aprender algo nuevo :)

P.D2: Antes de que me mates se que el tema tendria que ir en Base de datos pero como no encontre nada de SQL por eso lo puse aqui :(

Última edición por Newphp; 23/08/2004 a las 10:23
  #5 (permalink)  
Antiguo 23/08/2004, 13:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
muchas gracias cluster :D me ha servido de mucho :D pero tengo otra preguntita :$ y si las dos filas estan en la misma tabla y se llaman igual las filas(osea que es la misma fila,pero de dos datos distintos que solo tienen en comun el nombre)?como lo hago entonces?:(
No entendí el problema .. En principio si hay dos campos de un par de tabla que guardan relación .. (claves foráneas) .. el dato es el mismo en ambas .. así que da igual a cual te referencies. (fijate que no hablo de "filas" que sería técnicamente: registros y los "nombres" llamas son los "campos").

Pon un ejemplo más concreto para ver la situación.

Cita:
P.D2: Antes de que me mates se que el tema tendria que ir en Base de datos pero como no encontre nada de SQL por eso lo puse aqui :(
No moví el mensaje al foro de "Base de datos" por qué si bien hay una gran parte del problema que es el tema de los "alias" de SQL .. también tienes que saber en "PHP" a que te vas a refenciar si creas un alias.

Un saludo,
  #6 (permalink)  
Antiguo 23/08/2004, 13:47
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
gracias x responder cluster :D

en este caso siempre se realiza todo en una misma tabla,como en el caso anterior la consulta se hace en un index por letra:
el index es asi:

Código PHP:
$query "select autor,CD,cancion FROM musica WHERE autor LIKE '$letra%' 
lo que quiero es que si en la tabla(en la misma tabla)si hay dos registros con el mismo autor,me seleccione ambos y me muestre los datos de los de forma que muestre todos pero sin repetir ninguno,algo asi:

resultado:
autor.como autor es igual en los dos registros solo muestra uno
CD del primer registro y CD del segundo registro,como CD es distinto en ambos registros me muestra los dos
cancion,como cancion es igual en los dos registros solo muestra uno

no se si me explique xD es un poco raro el tema


gracias :D

Última edición por Newphp; 23/08/2004 a las 13:48
  #7 (permalink)  
Antiguo 23/08/2004, 14:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pretendes agrupar por "autor"? Pon un ejemplo con datos reales (tanto de lo que tendría tu tabla como de lo que pretendes obtener).

Parece que lo que quieres hacer es algo tipo

En tu tabla:
autor CD
yo cd1
otroautor cdX
yo cd2
tu cd2

y quieres mostrar:
yo:
cd1
cd2
otroautor:
cdX
tu:
cd2

Si es eso .. lo que debes hacer es tener una variable como "acomulador" para ver que "autor" estás obteniendo en tu bucle que debes usar para leer los registros arrojados por tu consulta y si "cambia" .. será cuando pongas el nombre del autor (el campo que lo contenga ..). A todo esto necesitas ordenar por nombre del autor (tu campo autor) para que funcione correctamente el asunto.

Sería algo tipo:
Código PHP:
<?
// COnectas a tu BD .. seleccionas la BD a usar .. etc...

$query "select autor,CD,cancion FROM musica WHERE autor LIKE '$letra%' ORDER BY autor"
mysql_query($query) or die (mysql_error());

$autor_anterior='';
while (
$row=mysql_fetch_array($resultado)){
    if (
$autor_anterior != $row['autor']){
       echo 
"<b>".$row['autor']."</b><br>";
    }
   
$autor_anterior=$row['autor'];
   echo 
$row['CD']."<br>";
}
?>
Un saludo,

Última edición por Cluster; 23/08/2004 a las 15:00
  #8 (permalink)  
Antiguo 23/08/2004, 17:00
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
exacto cluster es eso exactamente lo que queria obtener,agrupar los datos por "autor":D gracias ahora mismo lo pruebo :D
  #9 (permalink)  
Antiguo 23/08/2004, 17:11
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
WOW gracias cluster funciona a la perfeccion gracias :D

P.D: Ya una pregunta para aprender mas :D como podria hacerlo para poder ordenarlo de otra forma y que me diera el mismo resultado?no hace falta que me pongas el codigo solamente dame una pista :D es me gusta preguntar...asi aprendo

Última edición por Newphp; 23/08/2004 a las 17:16
  #10 (permalink)  
Antiguo 23/08/2004, 17:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. el detalle para que la rutina funcione es que ha de ser ordenado por "nombre" .. pero si requiers ordenar por otros factores además .. puedes añadir mas campos en el ORDER BY e incluso hacer que sea descendente o ascendente (todo esto es SQL ya)

Un saludo,
  #11 (permalink)  
Antiguo 23/08/2004, 18:00
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
gracias cluster,te llamare flash por al velocidad en responder xD,gracias ahora mismo mirare lo del order by ;)
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 20:46.