Foros del Web » Programando para Internet » PHP »

Duda con respecto a la realización de un query!!

Estas en el tema de Duda con respecto a la realización de un query!! en el foro de PHP en Foros del Web. Muy buenas tardes a todos, me dirijo nuevamente a través de este foro para plantear una duda que tengo, más bien un enredo, sobre un ...
  #1 (permalink)  
Antiguo 21/12/2007, 04:05
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Duda con respecto a la realización de un query!!

Muy buenas tardes a todos, me dirijo nuevamente a través de este foro para plantear una duda que tengo, más bien un enredo, sobre un query hacia mi base de datos.

En la actualidad, me encuentro realizando un script para una página de béisbol, y tengo una pequeña duda, voy a explicar en primer lugar, la estructura de la tabla.

Tengo dos tablas una llamada "calendario" y otra denominada "lanzadores", en la primera de ella tengo las siguientes columnas:

Tabla Calendario:
Cita:
Fecha del juego (date)
Equipo Home Club (homeclub)
Carreras anotadas por el equipo Home Club (carrerashc)
Equipo visitante (visitante)
Carreras anotadas por el conjunto visitante (carrerasv)
Nombre del lanzador abridor por el equipo Home club (phomeclub)
Nombre del lanzador abridor por el equipo visitante (pvisitante)
Nombre del lanzador ganador (pganador)
Nombre del lanzador perdedor (pperdedor)
Nombre del lanzador que se adjudica el juego salvado (psalvado)
Estadio donde se llevará a cabo el juego (estadio)
Hora del partido (hora)
Medio de comunicación que esta a cargo de la transmisión (transmision)

Entre paréntesis les coloqué el nombre que lleva el campo dentro de la tabla
A su vez, tengo otra tabla donde tengo almacenado todos los nombres de los lanzadores de la liga, con la respectiva información de victorias, derrotas y salvados que posee cada uno. A continuación su estructura

Tabla Lanzadores:

Cita:
Nombre del lanzador (lanzador)
Cantidad de victorias (victorias)
Cantidad de derrotas (derrotas)
Cantidad de salvados (salvados)

Entre paréntesis les coloqué el nombre que lleva el campo dentro de la tabla
La cuestión es, que deseo colocar en mi página web, una tabla que se llame RESULTADOS DEL DÍA, donde me coloque la información del score de cada juego que se llevó a cabo en el día, y abajo del resultado me coloque quien fue el lanzador ganador del encuentro, el lanzador perdedor y finalmente el lanzador salvador (en caso de haberlo).

Eso ya lo hice, y todo funciona a la perfección, solo con un detalle, que no selecciona de manera correcta la cantidad de victorias del lanzador correspondiente, y he allí mi duda. A continuación, les coloco el query que realizo a la base de datos, para que ella seleccione los resultados y los lanzadores en cuestión:

index.php

Cita:
<?php
function Conectarse()
{
if (!($link=mysql_connect("localhost","user","clave") ))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("baseball",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
?>
</table>
<?php
include("conex.phtml");
$link=Conectarse();
$result=mysql_query("SELECT * FROM calendario,lanzadores WHERE 1 AND `date` LIKE DATE_SUB(CURDATE(),INTERVAL 1 DAY) AND `lanzador`=`pganador`");
?>
<table border="3" cellpadding="3" cellspacing="3" width="100%" id="AutoNumber4" height="32" style="font-family: Verdana; border-collapse:collapse" class="ms-list1-0001-main" bordercolor="#000000" bordercolorlight="#000000" bordercolordark="#000000">
<!-- fpstyle: 24,000010000 -->
<?php

while($row = mysql_fetch_array($result)) {
printf(" <tr><td><center>%s: %s<br><br>VS<br><br><center>%s: %s</td></tr><tr><td><center>PG: %s (%s-%s)<br><br><center>PP: %s (%s-%s)<br><br><center>PS: %s (%s)</td></tr>
", $row["visitante"],$row["carrerasv"],$row["homeclub"],$row["carrerashc"],$row["pganador"],$row["victorias"],$row["derrotas"],$row["pperdedor"],$row["victorias"],$row["derrotas"],$row["psalvado"],$row["salvados"]);
} mysql_free_result($result);
mysql_close($link);
?>
Cómo pueden observar, ella toma de la base de datos el resultado del encuentro sin problema, también selecciona de manera correcta los lanzadores que quedaron ganadores, perdedores y salvadores, el único problema existente, es que coloca a todos los lanzadores la misma cantidad de victorias, derrotas y salvados, y he allí mi duda. Es un poco complejo, por lo que les voy a colocar mi página web para que observen el problema: http://beisbol.radiotricolor.org, para que observen la tabla resultados que está debajo de la parte de noticias, e intenten ayudarme para ver cual es el problema.

Sé que el query tiene un pequeño error, pero no sé solucionarlo, porque como pueden darse cuenta, coloqué lo siguiente:

Cita:
SELECT * FROM calendario,lanzadores WHERE 1 AND `date` LIKE DATE_SUB(CURDATE(),INTERVAL 1 DAY) AND `lanzador`=`pganador`
Es por ello que toma las victorias, derrotas y salvados de los lanzadores del equipo home club, yo he intentado hacer lo siguiente:

Cita:
SELECT * FROM calendario,lanzadores WHERE 1 AND `date` LIKE DATE_SUB(CURDATE(),INTERVAL 1 DAY) AND `lanzador`=`pganador` OR `lanzador`=`pperdedor` OR `lanzador`=`psalvado`
Porque creí que de esta manera tomaría en cuenta de la tabla Lanzadores, las victorias, derrotas y salvados de cada lanzador que esté implicado en las decisiones de cada juego, pero no es así, ni lo hace, y además de no hacerlo, imprime en la tabla de la página principal, cada juego 3 veces.

Sé que el asunto es medio enredado, yo mismo estoy un poco enrrollado en el asunto, pero espero que puedan ayudarme.

Muchas Gracias de antemano
retriever2005

Última edición por retrievr2005; 21/12/2007 a las 06:56
  #2 (permalink)  
Antiguo 21/12/2007, 11:20
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Duda con respecto a la realización de un query!!

Disculpen, nadie ha podido entender el problema?
  #3 (permalink)  
Antiguo 21/12/2007, 13:16
Avatar de agressor  
Fecha de Ingreso: noviembre-2007
Ubicación: Knocking the Death Door..
Mensajes: 368
Antigüedad: 16 años, 5 meses
Puntos: 3
Re: Duda con respecto a la realización de un query!!

Te los muestra 3 veces ya que si son 3 tipos distintos de lanzadores siempre pueden haber 3 o 2 ya que hayn un ganador, y un perdedor por partido minimo luego tambien tenes un salvador que es cuando realizan un cambio no entonecs siempre te tirara 3 veces ya que estas filtrando por PITCHER o Lanzador..

Eplicame mejor dame las tablas y de db y haber si te puedo ayudar en algo..
  #4 (permalink)  
Antiguo 21/12/2007, 16:47
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Duda con respecto a la realización de un query!!

Muchas gracias agressor por la ayuda, si en efecto, noté eso, que como son 3 lanzadores muestra el resultado 2 ó 3 veces, pero indicame que info necesitas, ya la estructura de ambas tablas las coloqué en el post inicial.

No sé si viste la página que coloqué en el post inicial, ahí donde dice RESULTADOS DEL DÍA, está el problema, muestra toda la información de manera correcta, pero el récord de los lanzadores no corresponde a los pitchers en cuestión, lo que hace el query es tomar el número de victorias, derrotas y salvados del pitcher ganador del encuentro y le coloca esa misma información, que no le corresponde, al lanzador perdedor y al salvador del partido.

Yo quiero que tome el número de victorias, derrotas y salvados del lanzador que corresponde en cada caso.

Una vez más muchas gracias y ojalá puedas ayudarme.
Saludos.
  #5 (permalink)  
Antiguo 21/12/2007, 19:10
Avatar de agressor  
Fecha de Ingreso: noviembre-2007
Ubicación: Knocking the Death Door..
Mensajes: 368
Antigüedad: 16 años, 5 meses
Puntos: 3
De acuerdo Re: Duda con respecto a la realización de un query!!

Bueno puedes filtrar por cada lanzador entonces filtras por el dia luego filtras por el pitcher ganador..

select * from calendario where pganador in (select * from lanzadores where lanzador.lanzadores=lanzador.calendario) and where calendario.fecha=date() o now()

No me acuerdo cual era para la fecha actual..

no se si me entiendes esto es una subconsulta te permite comparar datos de dos o mas tablas...
si quieres colocar las derrotas, victorias y salvados debes escribir el nombre de la tabla luego el campo
algo mas o menos asi

lanadores.victoria,lanzadores.derrotas,lanzadores. salvados

creo que deberia funcionar..

Prueba y me cuentas..!

Salu2..!
  #6 (permalink)  
Antiguo 22/12/2007, 03:00
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Duda con respecto a la realización de un query!!

Gracias agressor una vez más, sin embargo no entendí muy bien lo que respondiste, fíjate he realizado la siguiente consulta:

Cita:
SELECT * FROM calendario,lanzadores WHERE lanzador=pganador AND lanzador=pperdedor and DATE_SUB(CURDATE(),INTERVAL 1 DAY)
En la que le pedí que me seleccionara el lanzador ganador y perdedor del encuentro, datos que están en la tabla CALENDARIOS y que coincidan estos datos con el campo LANZADOR de la tabla de LANZADORES, pero pese a que los datos están, no arroja ningún resultado.

Pero en efecto, como mencionas en tu comentario, lo que me interesa es seleccionar el número de victorias, derrotas y salvados correspondiente a cada lanzador, pero aún no entiendo como hacerlo.

Saludos!
  #7 (permalink)  
Antiguo 22/12/2007, 05:56
Avatar de agressor  
Fecha de Ingreso: noviembre-2007
Ubicación: Knocking the Death Door..
Mensajes: 368
Antigüedad: 16 años, 5 meses
Puntos: 3
Mensaje Re: Duda con respecto a la realización de un query!!

Es que te lo explique arriba para ver campos que estan en otras tablas debes especificar la tabla y el campo que debes mostrar..

algo asi..

http://www.maestrosdelweb.com/editorial/tutsql7/

y tambien

asi..

http://www.desarrolloweb.com/articulos/2337.php

SELECT * FROM calendario,lanzadores WHERE lanzador.lanzadores=calendario.pganador AND lanzador.lanzador=calendario.pperdedor and DATE_SUB(CURDATE(),INTERVAL 1 DAY)

tal vez te funciones asi..

Prueba y me cuentas..!

Salu2..!
  #8 (permalink)  
Antiguo 22/12/2007, 06:53
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Duda con respecto a la realización de un query!!

He vuelto a colocar la consulta colocando la tabla y campo como me indicaste y nada, sigue sin funcionar jajaja. Es bien complicado este query!! No sabía que me costaría tanto!!

Estoy leyendo los manuales que colocaste a ver si tirándola a pegar acierto jejejej

Si tienes otra idea, avísame
Muchas gracias!!
  #9 (permalink)  
Antiguo 22/12/2007, 07:03
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Duda con respecto a la realización de un query!!

He realizado una subconsulta de la siguiente manera

Cita:
SELECT calendario.pganador, calendario.pperdedor, calendario.psalvado
FROM calendario
WHERE
`pganador`
IN
(
SELECT
lanzadores.lanzador
FROM
lanzadores
)
Y funciona perfecto, pero cuando le pido que además de pganador, compare también pperdedor, me sale un error:

Cita:
SELECT calendario.pganador, calendario.pperdedor, calendario.psalvado
FROM calendario
WHERE
`pganador`,`pperdedor`
IN
(
SELECT
lanzadores.lanzador
FROM
lanzadores
)

Dispara el siguiente error: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' `pperdedor` IN ( SELECT lanzadores . lanzador FROM lanzadores )
LIMIT ' at line 1
Saludos
  #10 (permalink)  
Antiguo 22/12/2007, 17:20
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Duda con respecto a la realización de un query!!

Aggressor te fuiste??
  #11 (permalink)  
Antiguo 27/12/2007, 08:05
Avatar de agressor  
Fecha de Ingreso: noviembre-2007
Ubicación: Knocking the Death Door..
Mensajes: 368
Antigüedad: 16 años, 5 meses
Puntos: 3
Re: Duda con respecto a la realización de un query!!

Si me fui de vacaiones todavia estoy pero aqui te ayudo..

si por que mira cuando colocas que te muestre otro campo debes colocar otro filtro osea

SELECT calendario.pganador, calendario.pperdedor, calendario.psalvado
FROM calendario
WHERE
`pganador`
IN
(
SELECT
lanzadores.lanzador
FROM
lanzadores
)
AND
`pperdedor`
IN
(
SELECT
lanzadores.lanzador
FROM
lanzadores
)
AND
`psalvado`
IN
(
SELECT
lanzadores.lanzador
FROM
lanzadores
)
Prueba y me cuentas saludes.. te contestare fijo.. el 2 de Enero.. o si vuelvo antes deja tus posts o avances que yo te ayudo..

Salu2..!

Última edición por agressor; 27/12/2007 a las 09:27 Razón: Faltaba
  #12 (permalink)  
Antiguo 02/01/2008, 10:26
Avatar de agressor  
Fecha de Ingreso: noviembre-2007
Ubicación: Knocking the Death Door..
Mensajes: 368
Antigüedad: 16 años, 5 meses
Puntos: 3
Re: Duda con respecto a la realización de un query!!

Te funciono el SQL retrievr2005??
  #13 (permalink)  
Antiguo 05/01/2008, 22:18
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Duda con respecto a la realización de un query!!

Coye Agressor muchas gracias, pensé que te habías ido jejejeje. Casualidad buscando otra cosa me encontré otra vez con ese post y resulta que me doy cuenta que me respondiste. Ahora pruebo a ver si funciona y te respondo.

Muchas gracias
Feliz año!
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 07:31.