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

Seleccionar múltiples tablas con PHP (Nadie puede con esto??)

Estas en el tema de Seleccionar múltiples tablas con PHP (Nadie puede con esto??) en el foro de Mysql en Foros del Web. Holaa... bueno esta es mi primera consulta... el problema es que con php seleccione dos tablas de la Código PHP: $calendario  =  mysql_query ( "SELECT calendario.rango,calendario.fecha,citas.dia,citas.hora FROM calendario,citas" ...
  #1 (permalink)  
Antiguo 07/01/2011, 05:42
(Desactivado)
 
Fecha de Ingreso: enero-2011
Mensajes: 66
Antigüedad: 13 años, 3 meses
Puntos: 2
Pregunta Seleccionar múltiples tablas con PHP (Nadie puede con esto??)

Holaa... bueno esta es mi primera consulta...
el problema es que con php seleccione dos tablas de la
Código PHP:
$calendario mysql_query("SELECT calendario.rango,calendario.fecha,citas.dia,citas.hora FROM calendario,citas");
while(
$calR=mysql_fetch_array($calendario)) {
    
$calendario_hora $calR['rango'];
    
$calendario_fecha $calR['fecha'];
    
$citas_dia $calR['dia'];
    
$citas_hora $calR['hora'];
    
    echo 
$citas_dia.' <br> ';

pero al mostrar el contenido en " $citas_dia ", que en la base de datos solo has 2 registros, me muestran 6 registros los dos de la tabla cita se repiten 6 beses, en la tabla calendario tengo 6 registros..
como solucionaría este dilema..

Última edición por cosobo; 07/01/2011 a las 06:06 Razón: ninguna respuesta
  #2 (permalink)  
Antiguo 07/01/2011, 06:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Seleccionar múltiples tablas con PHP (Nadie puede con esto??)

Esa forma de consulta crea productos cartesianos (la peor forma de consulta posible), porque no estás indicando cuál es la condición de relación entre las dos tablas.
SI las citas se relacionan con el calendario por la fecha de ambos, podría ser:
Código MySQL:
Ver original
  1.    C.rango,
  2.    C.fecha,
  3.    T.dia,
  4.    T.hora
  5. FROM calendario C INNER JOIN citas T ON T.fecha = T.dia

Pero si se relacionan por otro campo, por ejemplo una FK en citas, hay que indicar en el ON cuál es el par de campos que se deben relacionar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/01/2011, 06:16
(Desactivado)
 
Fecha de Ingreso: enero-2011
Mensajes: 66
Antigüedad: 13 años, 3 meses
Puntos: 2
Sonrisa Respuesta: Seleccionar múltiples tablas con PHP (Nadie puede con esto??)

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Esa forma de consulta crea productos cartesianos (la peor forma de consulta posible), porque no estás indicando cuál es la condición de relación entre las dos tablas.
SI las citas se relacionan con el calendario por la fecha de ambos, podría ser:
Código MySQL:
Ver original
  1.    C.rango,
  2.    C.fecha,
  3.    T.dia,
  4.    T.hora
  5. FROM calendario C INNER JOIN citas T ON T.fecha = T.dia

Pero si se relacionan por otro campo, por ejemplo una FK en citas, hay que indicar en el ON cuál es el par de campos que se deben relacionar.
lo que se quiere hacer es mostrar el contenido de el campo fecha y hora ( citas los campos son: dia, hora y calendario los campos son: fecha, rango ) de las dos tablas ninguna se repite, solo obtener el contenido de los campos "de todos los registros", en el campo fecha de calendario el registro es "2011-01-10/2011-10-10" y luego con separo y comparo para insertar que el día es invalido, eso es sencillo el dilema que que me vota 6 beses en registro de citas si solo hay dos....

Última edición por cosobo; 07/01/2011 a las 06:18 Razón: actualización

Etiquetas: php, php+mssql, tablas
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 21:31.