Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/04/2014, 05:55
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Inner Join une un campo de una tabla a varios de otra tabla

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `equipo_arbitral` (
  2.   `Codigo_arbitro` int(11) NOT NULL AUTO_INCREMENT,
  3.   `Licencia` varchar(4) DEFAULT NULL,
  4.   `Nombre` varchar(20) DEFAULT NULL,
  5.   `Apellidos` varchar(20) DEFAULT NULL,
  6.   `Email` varchar(20) DEFAULT NULL,
  7.   `Telefono1` int(9) DEFAULT NULL,
  8.   `Telefono2` int(9) DEFAULT NULL,
  9.   `Cuenta` int(20) DEFAULT NULL,
  10.   `Cod_localidad` int(3) DEFAULT NULL,
  11.   PRIMARY KEY (`Codigo_arbitro`));

Luego en la tabla "equipo_arbitral" tienes los arbitros (individuos) no los equipos arbitrales, entendiendo equipo arbitral como el grupo de arbitros que pintan un partido. Seri mucho mas claro llamar a esa tabla "Arbitros" puesto que es lo que la tabla de arbitros.... las cosas pore su nombre.

Estos, los equipos arbitrales estan el la tabla partido: arbitro principal, arbitro auxiliar, anotador, crono y operador, entendiendo equipo arbitral como el grupo de arbitros que pintan un partido.

`ArbPrin` int(11) DEFAULT NULL,
`ArbAux` int(11) DEFAULT NULL,
`Anotador` int(11) DEFAULT NULL,
`Crono` int(11) DEFAULT NULL,
`Op24` int(11) DEFAULT NULL,


todos esos campos deberían ser FK a la tabla "equipo_arbitral" ya que todos esos campos deben conetener un elemento existente en la tabla "equipo_arbitral"

Para conseguir lo que buscas debes hacer join de las tablas tantas veces como relaciones tengan.


Código MySQL:
Ver original
  1. SELECT APrin.`Codigo_arbitro` CodigoAPrin, APrin.`Nombre` NombreAPrin,APrin.`Apellidos` ApellidosAPrin,
  2.          AAux.`Codigo_arbitro` CodigoAAux, AAux.`Nombre` NombreAAux,AAux.`Apellidos` ApellidosAAux,
  3.          AAnot.`Codigo_arbitro` CodigoAAnot, AAnot.`Nombre` NombreAAnot,AAnot.`Apellidos` ApellidosAAnot,
  4.          ACrono.`Codigo_arbitro` CodigoACrono, ACrono.`Nombre` NombreACrono,ACrono.`Apellidos` ApellidosACrono,
  5.          AOp24.`Codigo_arbitro` CodigoAOp24, AOp24.`Nombre` NombreAOp24,ACOp24.`Apellidos` ApellidosAOp24,
  6.          p.Hora,
  7.          tPab.Codigo_localidad AS 'Local'
  8.   FROM `partido` p INNER JOIN `equipo_arbitral` APrin ON p.`ArbPrin`=APrin.`Codigo_arbitro`
  9.                    INNER JOIN `equipo_arbitral` AAux ON p.`ArbAux`=AAux.`Codigo_arbitro`
  10.                    INNER JOIN `equipo_arbitral` AAnot ON p.`Anotador`=AAnot.`Codigo_arbitro`
  11.                    INNER JOIN `equipo_arbitral` ACrono ON p.`Crono`=ACrono.`Codigo_arbitro`
  12.                    INNER JOIN `equipo_arbitral` AOp24 ON p.`Op24`=AOp24.`Codigo_arbitro`
  13.                    INNER JOIN `pabellon` tPab ON P.Codigo_pabellon=tPab.Codigo_pabellon;

Para obtener los datos del Arbitro principal de un partido debes relacionar el partido con la tabla donde tengas los arbitros por el campo de Arbitro principal, para los del auxiliar debes relacionar la misma tabla paro esta vez por el campo de arbitro auxiliar y así sucesivamente.....

Se entiende?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 10/04/2014 a las 06:02