par
sadeq » 29 mars 2011, 01:34
Bonjour,
Voici une proposition de conception de la base de données qui répond à tes besoins : un Match fait rencontrer 2 Equipes ayant chacune 10 joueurs (dont 5 remplaçants)
Modèle relationnel généré sous le logiciel :
Workbench 5.0.30 (Pour MySQL)
Voici le projet source de ce modèle sous Workbench
Bien sûr ce schéma n'est pas complet, c'est juste un premier exemple qui reflète globalement l'idée.
Après génération du script SQL équivalent à ce modèle relationnel de données, on obtient le code suivant que j'ai enrichi avec un jeu d'essai d'exemple :
-- phpMyAdmin SQL Dump
-- version 3.3.9
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Lun 28 Mars 2011 à 23:20
-- Version du serveur: 5.5.8
-- Version de PHP: 5.3.5
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Base de données: `basketball`
--
-- --------------------------------------------------------
--
-- Structure de la table `equipe`
--
-- Création: Mar 29 Mars 2011 à 01:16
--
CREATE TABLE IF NOT EXISTS `equipe` (
`idEquipe` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(255) DEFAULT NULL,
`club` varchar(255) DEFAULT NULL,
`ville` varchar(255) DEFAULT NULL,
`pays` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idEquipe`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ;
--
-- Contenu de la table `equipe`
--
INSERT INTO `equipe` (`idEquipe`, `nom`, `club`, `ville`, `pays`) VALUES
(1, 'PROA-PARIS LEVALLOIS', 'PARIS LEVALLOIS ASSOCIATION', '92300 LEVALLOIS-PERRET', 'France'),
(2, 'PROA-CHOLET BASKET', 'CHOLET BASKET', '49300 CHOLET', 'France'),
(3, 'PROA-ASVEL BASKET', 'ASVEL BASKET', '69100 VILLEURBANNE', 'France'),
(4, 'PROA-BCM GRAVELINES DUNKERQUE GRAND LITTORAL', 'GRAVELINES GRAND FORT BCM', '59820 GRAVELINES', 'France'),
(5, 'PROA-LE MANS SARTHE BASKET', 'LE MANS SC MODERNE', '72100 LE MANS', 'France'),
(6, 'PROA-HYERES TOULON VAR BASKET', 'HYERES TOULON VAR BASKET', '83200 TOULON', 'France'),
(7, 'PROA-STRASBOURG IG', 'S.I. GRAFFENSTADEN', '67000 STRASBOURG', 'France'),
(8, 'PROA-LIMOGES CSP SASP', 'LIMOGES CSP', '87100 LIMOGES', 'France'),
(9, 'PROA-SEM ELAN SPORTIF CHALONNAIS', 'ES CHALON SUR SAONE', '71100 CHALON-SUR-SAONE', 'France'),
(10, 'PROA-SLUC NANCY BASKET PRO', 'SLUC NANCY BASKET ASSOCIATION', '54000 NANCY', 'France'),
(11, 'PROA-SAOS CHORALE DE ROANNE BASKET', 'ROANNE CHORALE', '42300 ROANNE', 'France'),
(12, 'PROA-ORLEANS LOIRET BASKET', 'ORLEANS BASKET', '45100 ORLEANS', 'France'),
(13, 'PROA-SEM ELAN BEARNAIS PAU LACQ ORTHEZ', 'ELAN BEARNAIS PAU LACQ ORTHEZ (PAU NORD EST)', '64000 PAU', 'France'),
(14, 'UNION POITIERS BASKET 86', 'UNION POITIERS BASKET 86', '86000 POITIERS', 'France');
-- --------------------------------------------------------
--
-- Structure de la table `joueur`
--
-- Création: Mar 29 Mars 2011 à 01:16
--
CREATE TABLE IF NOT EXISTS `joueur` (
`idJoueur` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(45) DEFAULT NULL,
`prenom` varchar(45) DEFAULT NULL,
`idEquipe` int(11) NOT NULL,
PRIMARY KEY (`idJoueur`),
KEY `idx_Joueur_Equipe` (`idEquipe`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=141 ;
--
-- Contenu de la table `joueur`
--
INSERT INTO `joueur` (`idJoueur`, `nom`, `prenom`, `idEquipe`) VALUES
(1, 'J1', NULL, 1),
(2, 'J2', NULL, 1),
(3, 'J3', NULL, 1),
(4, 'J4', NULL, 1),
(5, 'J5', NULL, 1),
(6, 'J6', NULL, 1),
(7, 'J7', NULL, 1),
(8, 'J8', NULL, 1),
(9, 'J9', NULL, 1),
(10, 'J10', NULL, 1),
(11, 'J11', NULL, 2),
(12, 'J12', NULL, 2),
(13, 'J13', NULL, 2),
(14, 'J14', NULL, 2),
(15, 'J15', NULL, 2),
(16, 'J16', NULL, 2),
(17, 'J17', NULL, 2),
(18, 'J18', NULL, 2),
(19, 'J19', NULL, 2),
(20, 'J20', NULL, 2),
(21, 'J21', NULL, 3),
(22, 'J22', NULL, 3),
(23, 'J23', NULL, 3),
(24, 'J24', NULL, 3),
(25, 'J25', NULL, 3),
(26, 'J26', NULL, 3),
(27, 'J27', NULL, 3),
(28, 'J28', NULL, 3),
(29, 'J29', NULL, 3),
(30, 'J30', NULL, 3),
(31, 'J31', NULL, 4),
(32, 'J32', NULL, 4),
(33, 'J33', NULL, 4),
(34, 'J34', NULL, 4),
(35, 'J35', NULL, 4),
(36, 'J36', NULL, 4),
(37, 'J37', NULL, 4),
(38, 'J38', NULL, 4),
(39, 'J39', NULL, 4),
(40, 'J40', NULL, 4),
(41, 'J41', NULL, 5),
(42, 'J42', NULL, 5),
(43, 'J43', NULL, 5),
(44, 'J44', NULL, 5),
(45, 'J45', NULL, 5),
(46, 'J46', NULL, 5),
(47, 'J47', NULL, 5),
(48, 'J48', NULL, 5),
(49, 'J49', NULL, 5),
(50, 'J50', NULL, 5),
(51, 'J51', NULL, 6),
(52, 'J52', NULL, 6),
(53, 'J53', NULL, 6),
(54, 'J54', NULL, 6),
(55, 'J55', NULL, 6),
(56, 'J56', NULL, 6),
(57, 'J57', NULL, 6),
(58, 'J58', NULL, 6),
(59, 'J59', NULL, 6),
(60, 'J60', NULL, 6),
(61, 'J61', NULL, 7),
(62, 'J62', NULL, 7),
(63, 'J63', NULL, 7),
(64, 'J64', NULL, 7),
(65, 'J65', NULL, 7),
(66, 'J66', NULL, 7),
(67, 'J67', NULL, 7),
(68, 'J68', NULL, 7),
(69, 'J69', NULL, 7),
(70, 'J70', NULL, 7),
(71, 'J71', NULL, 8),
(72, 'J72', NULL, 8),
(73, 'J73', NULL, 8),
(74, 'J74', NULL, 8),
(75, 'J75', NULL, 8),
(76, 'J76', NULL, 8),
(77, 'J77', NULL, 8),
(78, 'J78', NULL, 8),
(79, 'J79', NULL, 8),
(80, 'J80', NULL, 8),
(81, 'J81', NULL, 9),
(82, 'J82', NULL, 9),
(83, 'J83', NULL, 9),
(84, 'J84', NULL, 9),
(85, 'J85', NULL, 9),
(86, 'J86', NULL, 9),
(87, 'J87', NULL, 9),
(88, 'J88', NULL, 9),
(89, 'J89', NULL, 9),
(90, 'J90', NULL, 9),
(91, 'J91', NULL, 10),
(92, 'J92', NULL, 10),
(93, 'J93', NULL, 10),
(94, 'J94', NULL, 10),
(95, 'J95', NULL, 10),
(96, 'J96', NULL, 10),
(97, 'J97', NULL, 10),
(98, 'J98', NULL, 10),
(99, 'J99', NULL, 10),
(100, 'J100', NULL, 10),
(101, 'J101', NULL, 11),
(102, 'J102', NULL, 11),
(103, 'J103', NULL, 11),
(104, 'J104', NULL, 11),
(105, 'J105', NULL, 11),
(106, 'J106', NULL, 11),
(107, 'J107', NULL, 11),
(108, 'J108', NULL, 11),
(109, 'J109', NULL, 11),
(110, 'J110', NULL, 11),
(111, 'J111', NULL, 12),
(112, 'J112', NULL, 12),
(113, 'J113', NULL, 12),
(114, 'J114', NULL, 12),
(115, 'J115', NULL, 12),
(116, 'J116', NULL, 12),
(117, 'J117', NULL, 12),
(118, 'J118', NULL, 12),
(119, 'J119', NULL, 12),
(120, 'J120', NULL, 12),
(121, 'J121', NULL, 13),
(122, 'J122', NULL, 13),
(123, 'J123', NULL, 13),
(124, 'J124', NULL, 13),
(125, 'J125', NULL, 13),
(126, 'J126', NULL, 13),
(127, 'J127', NULL, 13),
(128, 'J128', NULL, 13),
(129, 'J129', NULL, 13),
(130, 'J130', NULL, 13),
(131, 'J131', NULL, 14),
(132, 'J132', NULL, 14),
(133, 'J133', NULL, 14),
(134, 'J134', NULL, 14),
(135, 'J135', NULL, 14),
(136, 'J136', NULL, 14),
(137, 'J137', NULL, 14),
(138, 'J138', NULL, 14),
(139, 'J139', NULL, 14),
(140, 'J140', NULL, 14);
-- --------------------------------------------------------
--
-- Structure de la table `match`
--
-- Création: Mar 29 Mars 2011 à 01:16
--
CREATE TABLE IF NOT EXISTS `match` (
`idMatch` int(11) NOT NULL AUTO_INCREMENT,
`date` datetime DEFAULT NULL,
`lieu` varchar(255) DEFAULT NULL,
`idEquipe_locaux` int(11) DEFAULT NULL,
`idEquipe_visiteurs` int(11) DEFAULT NULL,
PRIMARY KEY (`idMatch`),
KEY `idx_Match_Equipe1` (`idEquipe_locaux`),
KEY `idx_Match_Equipe2` (`idEquipe_visiteurs`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
--
-- Contenu de la table `match`
--
INSERT INTO `match` (`idMatch`, `date`, `lieu`, `idEquipe_locaux`, `idEquipe_visiteurs`) VALUES
(1, '2011-03-25 20:30:00', 'SALLE PIERRE DE COUBERTIN Avenue Georges Laffond F - 75016 PARIS 16E ARRONDISSEMENT', 1, 2),
(2, '2011-04-05 20:00:00', 'ASTROBALLE 40 Avenue Marcel Cerdan F - 69100 VILLEURBANNE', 3, 4),
(3, '2011-03-26 20:00:00', 'COMPLEXE SPORTIF ANTARES 2 Avenue ANTARES F - 72100 LE MANS', 5, 6),
(4, '2011-03-26 20:00:00', 'HALL RHENUS Place de la foire Expositions F - 67000 STRASBOURG', 7, 8),
(5, '2011-03-26 20:00:00', 'LE COLISEE GRANDE SALLE Rue d Amsterdam F - 71100 CHALON-SUR-SAONE', 9, 10),
(6, '2011-03-26 20:00:00', 'HDS ANDRE VACHERESSE Rue des Vernes PARC FONTALON F - 42300 ROANNE', 11, 12),
(7, '2011-03-25 20:00:00', 'CENTRE FORMATION BASKETBALL Rue Pierre Massé F - 64000 PAU', 13, 14);
-- --------------------------------------------------------
--
-- Structure de la table `participation`
--
-- Création: Mar 29 Mars 2011 à 01:16
--
CREATE TABLE IF NOT EXISTS `participation` (
`idMatch` int(11) NOT NULL,
`idEquipe` int(11) NOT NULL,
`idJoueur` int(11) NOT NULL,
`numero` int(11) DEFAULT NULL,
`position` enum('arrière','ailier gauche','pivot','ailier droit','meneur de jeu') DEFAULT NULL,
`remplaçant` tinyint(1) DEFAULT '0',
PRIMARY KEY (`idJoueur`,`idEquipe`,`idMatch`),
KEY `idx_Participation_Joueur` (`idJoueur`),
KEY `idx_Participation_Equipe` (`idEquipe`),
KEY `idx_Participation_Match` (`idMatch`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Contenu de la table `participation`
--
INSERT INTO `participation` (`idMatch`, `idEquipe`, `idJoueur`, `numero`, `position`, `remplaçant`) VALUES
(1, 1, 1, NULL, 'arrière', 0),
(1, 1, 2, NULL, 'ailier gauche', 0),
(1, 1, 3, NULL, 'pivot', 0),
(1, 1, 4, NULL, 'ailier droit', 0),
(1, 1, 5, NULL, 'meneur de jeu', 0),
(1, 1, 6, NULL, 'arrière', 1),
(1, 1, 7, NULL, 'ailier gauche', 1),
(1, 1, 8, NULL, 'pivot', 1),
(1, 1, 9, NULL, 'ailier droit', 1),
(1, 1, 10, NULL, 'meneur de jeu', 1),
(1, 2, 11, NULL, 'arrière', 0),
(1, 2, 12, NULL, 'ailier gauche', 0),
(1, 2, 13, NULL, 'pivot', 0),
(1, 2, 14, NULL, 'ailier droit', 0),
(1, 2, 15, NULL, 'meneur de jeu', 0),
(1, 2, 16, NULL, 'arrière', 1),
(1, 2, 17, NULL, 'ailier gauche', 1),
(1, 2, 18, NULL, 'pivot', 1),
(1, 2, 19, NULL, 'ailier droit', 1),
(1, 2, 20, NULL, 'meneur de jeu', 1),
(2, 3, 21, NULL, 'arrière', 0),
(2, 3, 22, NULL, 'ailier gauche', 0),
(2, 3, 23, NULL, 'pivot', 0),
(2, 3, 24, NULL, 'ailier droit', 0),
(2, 3, 25, NULL, 'meneur de jeu', 0),
(2, 3, 26, NULL, 'arrière', 1),
(2, 3, 27, NULL, 'ailier gauche', 1),
(2, 3, 28, NULL, 'pivot', 1),
(2, 3, 29, NULL, 'ailier droit', 1),
(2, 3, 30, NULL, 'meneur de jeu', 1),
(2, 4, 31, NULL, 'arrière', 0),
(2, 4, 32, NULL, 'ailier gauche', 0),
(2, 4, 33, NULL, 'pivot', 0),
(2, 4, 34, NULL, 'ailier droit', 0),
(2, 4, 35, NULL, 'meneur de jeu', 0),
(2, 4, 36, NULL, 'arrière', 1),
(2, 4, 37, NULL, 'ailier gauche', 1),
(2, 4, 38, NULL, 'pivot', 1),
(2, 4, 39, NULL, 'ailier droit', 1),
(2, 4, 40, NULL, 'meneur de jeu', 1),
(3, 5, 41, NULL, 'arrière', 0),
(3, 5, 42, NULL, 'ailier gauche', 0),
(3, 5, 43, NULL, 'pivot', 0),
(3, 5, 44, NULL, 'ailier droit', 0),
(3, 5, 45, NULL, 'meneur de jeu', 0),
(3, 5, 46, NULL, 'arrière', 1),
(3, 5, 47, NULL, 'ailier gauche', 1),
(3, 5, 48, NULL, 'pivot', 1),
(3, 5, 49, NULL, 'ailier droit', 1),
(3, 5, 50, NULL, 'meneur de jeu', 1),
(3, 6, 51, NULL, 'arrière', 0),
(3, 6, 52, NULL, 'ailier gauche', 0),
(3, 6, 53, NULL, 'pivot', 0),
(3, 6, 54, NULL, 'ailier droit', 0),
(3, 6, 55, NULL, 'meneur de jeu', 0),
(3, 6, 56, NULL, 'arrière', 1),
(3, 6, 57, NULL, 'ailier gauche', 1),
(3, 6, 58, NULL, 'pivot', 1),
(3, 6, 59, NULL, 'ailier droit', 1),
(3, 6, 60, NULL, 'meneur de jeu', 1),
(4, 7, 61, NULL, 'arrière', 0),
(4, 7, 62, NULL, 'ailier gauche', 0),
(4, 7, 63, NULL, 'pivot', 0),
(4, 7, 64, NULL, 'ailier droit', 0),
(4, 7, 65, NULL, 'meneur de jeu', 0),
(4, 7, 66, NULL, 'arrière', 1),
(4, 7, 67, NULL, 'ailier gauche', 1),
(4, 7, 68, NULL, 'pivot', 1),
(4, 7, 69, NULL, 'ailier droit', 1),
(4, 7, 70, NULL, 'meneur de jeu', 1),
(4, 8, 71, NULL, 'arrière', 0),
(4, 8, 72, NULL, 'ailier gauche', 0),
(4, 8, 73, NULL, 'pivot', 0),
(4, 8, 74, NULL, 'ailier droit', 0),
(4, 8, 75, NULL, 'meneur de jeu', 0),
(4, 8, 76, NULL, 'arrière', 1),
(4, 8, 77, NULL, 'ailier gauche', 1),
(4, 8, 78, NULL, 'pivot', 1),
(4, 8, 79, NULL, 'ailier droit', 1),
(4, 8, 80, NULL, 'meneur de jeu', 1),
(5, 9, 81, NULL, 'arrière', 0),
(5, 9, 82, NULL, 'ailier gauche', 0),
(5, 9, 83, NULL, 'pivot', 0),
(5, 9, 84, NULL, 'ailier droit', 0),
(5, 9, 85, NULL, 'meneur de jeu', 0),
(5, 9, 86, NULL, 'arrière', 1),
(5, 9, 87, NULL, 'ailier gauche', 1),
(5, 9, 88, NULL, 'pivot', 1),
(5, 9, 89, NULL, 'ailier droit', 1),
(5, 9, 90, NULL, 'meneur de jeu', 1),
(5, 10, 91, NULL, 'arrière', 0),
(5, 10, 92, NULL, 'ailier gauche', 0),
(5, 10, 93, NULL, 'pivot', 0),
(5, 10, 94, NULL, 'ailier droit', 0),
(5, 10, 95, NULL, 'meneur de jeu', 0),
(5, 10, 96, NULL, 'arrière', 1),
(5, 10, 97, NULL, 'ailier gauche', 1),
(5, 10, 98, NULL, 'pivot', 1),
(5, 10, 99, NULL, 'ailier droit', 1),
(5, 10, 100, NULL, 'meneur de jeu', 1),
(6, 11, 101, NULL, 'arrière', 0),
(6, 11, 102, NULL, 'ailier gauche', 0),
(6, 11, 103, NULL, 'pivot', 0),
(6, 11, 104, NULL, 'ailier droit', 0),
(6, 11, 105, NULL, 'meneur de jeu', 0),
(6, 11, 106, NULL, 'arrière', 1),
(6, 11, 107, NULL, 'ailier gauche', 1),
(6, 11, 108, NULL, 'pivot', 1),
(6, 11, 109, NULL, 'ailier droit', 1),
(6, 11, 110, NULL, 'meneur de jeu', 1),
(6, 12, 111, NULL, 'arrière', 0),
(6, 12, 112, NULL, 'ailier gauche', 0),
(6, 12, 113, NULL, 'pivot', 0),
(6, 12, 114, NULL, 'ailier droit', 0),
(6, 12, 115, NULL, 'meneur de jeu', 0),
(6, 12, 116, NULL, 'arrière', 1),
(6, 12, 117, NULL, 'ailier gauche', 1),
(6, 12, 118, NULL, 'pivot', 1),
(6, 12, 119, NULL, 'ailier droit', 1),
(6, 12, 120, NULL, 'meneur de jeu', 1),
(7, 13, 121, NULL, 'arrière', 0),
(7, 13, 122, NULL, 'ailier gauche', 0),
(7, 13, 123, NULL, 'pivot', 0),
(7, 13, 124, NULL, 'ailier droit', 0),
(7, 13, 125, NULL, 'meneur de jeu', 0),
(7, 13, 126, NULL, 'arrière', 1),
(7, 13, 127, NULL, 'ailier gauche', 1),
(7, 13, 128, NULL, 'pivot', 1),
(7, 13, 129, NULL, 'ailier droit', 1),
(7, 13, 130, NULL, 'meneur de jeu', 1),
(7, 14, 131, NULL, 'arrière', 0),
(7, 14, 132, NULL, 'ailier gauche', 0),
(7, 14, 133, NULL, 'pivot', 0),
(7, 14, 134, NULL, 'ailier droit', 0),
(7, 14, 135, NULL, 'meneur de jeu', 0),
(7, 14, 136, NULL, 'arrière', 1),
(7, 14, 137, NULL, 'ailier gauche', 1),
(7, 14, 138, NULL, 'pivot', 1),
(7, 14, 139, NULL, 'ailier droit', 1),
(7, 14, 140, NULL, 'meneur de jeu', 1);
--
-- Contraintes pour les tables exportées
--
--
-- Contraintes pour la table `joueur`
--
ALTER TABLE `joueur`
ADD CONSTRAINT `fk_Joueur_Equipe` FOREIGN KEY (`idEquipe`) REFERENCES `equipe` (`idEquipe`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Contraintes pour la table `match`
--
ALTER TABLE `match`
ADD CONSTRAINT `fk_Match_Equipe1` FOREIGN KEY (`idEquipe_locaux`) REFERENCES `equipe` (`idEquipe`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_Match_Equipe2` FOREIGN KEY (`idEquipe_visiteurs`) REFERENCES `equipe` (`idEquipe`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Contraintes pour la table `participation`
--
ALTER TABLE `participation`
ADD CONSTRAINT `fk_Participation_Joueur` FOREIGN KEY (`idJoueur`) REFERENCES `joueur` (`idJoueur`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_Participation_Equipe` FOREIGN KEY (`idEquipe`) REFERENCES `equipe` (`idEquipe`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_Participation_Match` FOREIGN KEY (`idMatch`) REFERENCES `match` (`idMatch`) ON DELETE NO ACTION ON UPDATE NO ACTION;
Revenons aux questions que tu poses :
je veux récupérer les joueurs qui sont sur la feuille de match,
La requête SQL qui répond à cette question, liste les joueurs par équipe pour un match X donné :
SELECT e.idEquipe, e.nom, j.idJoueur, j.nom, j.prenom
FROM participation p JOIN joueur j ON p.idJoueur = j.idJoueur JOIN equipe e ON p.idEquipe = e.idEquipe
WHERE p.idMatch=?
ORDER BY e.nom, j.nom
Note: Les ? dans la requête sont des paramètres externes à fournir avant l'exécution.
de plus lorsque le membre souhaite changer sa composition d'équipe il devras ainsi lancer 10 UPDATE
C'est normal, car tu as 10 joueurs par équipe mais le nombre d'UPDATE effectif peut ne pas aller jusqu'à l'estimation maximale de 10, car la recomposition de l'équipe peut ne pas toucher tous les joueurs. On raisonne donc en UPDATE unitaire réalisé par la requête suivante, qui remplace un joueur par un autre pour un match X donné et une équipe Y donnée :
UPDATE participation SET idJoueur=?, numero=?, position=?, remplaçant=? WHERE idMatch=? AND idEquipe=?
Note: Les ? dans la requête sont des paramètres externes à fournir avant l'exécution.
Bonjour,
Voici une proposition de conception de la base de données qui répond à tes besoins : un Match fait rencontrer 2 Equipes ayant chacune 10 joueurs (dont 5 remplaçants)
Modèle relationnel généré sous le logiciel : [url=http://dev.mysql.com/downloads/workbench/5.0.html]Workbench 5.0.30 (Pour MySQL)[/url]
[img]http://dl.free.fr/kf8ZEm1zC[/img]
[url=http://dl.free.fr/kw3irnOxE]Voici le projet source de ce modèle sous Workbench[/url]
Bien sûr ce schéma n'est pas complet, c'est juste un premier exemple qui reflète globalement l'idée.
Après génération du script SQL équivalent à ce modèle relationnel de données, on obtient le code suivant que j'ai enrichi avec un jeu d'essai d'exemple :
[sql]
-- phpMyAdmin SQL Dump
-- version 3.3.9
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Lun 28 Mars 2011 à 23:20
-- Version du serveur: 5.5.8
-- Version de PHP: 5.3.5
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Base de données: `basketball`
--
-- --------------------------------------------------------
--
-- Structure de la table `equipe`
--
-- Création: Mar 29 Mars 2011 à 01:16
--
CREATE TABLE IF NOT EXISTS `equipe` (
`idEquipe` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(255) DEFAULT NULL,
`club` varchar(255) DEFAULT NULL,
`ville` varchar(255) DEFAULT NULL,
`pays` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idEquipe`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ;
--
-- Contenu de la table `equipe`
--
INSERT INTO `equipe` (`idEquipe`, `nom`, `club`, `ville`, `pays`) VALUES
(1, 'PROA-PARIS LEVALLOIS', 'PARIS LEVALLOIS ASSOCIATION', '92300 LEVALLOIS-PERRET', 'France'),
(2, 'PROA-CHOLET BASKET', 'CHOLET BASKET', '49300 CHOLET', 'France'),
(3, 'PROA-ASVEL BASKET', 'ASVEL BASKET', '69100 VILLEURBANNE', 'France'),
(4, 'PROA-BCM GRAVELINES DUNKERQUE GRAND LITTORAL', 'GRAVELINES GRAND FORT BCM', '59820 GRAVELINES', 'France'),
(5, 'PROA-LE MANS SARTHE BASKET', 'LE MANS SC MODERNE', '72100 LE MANS', 'France'),
(6, 'PROA-HYERES TOULON VAR BASKET', 'HYERES TOULON VAR BASKET', '83200 TOULON', 'France'),
(7, 'PROA-STRASBOURG IG', 'S.I. GRAFFENSTADEN', '67000 STRASBOURG', 'France'),
(8, 'PROA-LIMOGES CSP SASP', 'LIMOGES CSP', '87100 LIMOGES', 'France'),
(9, 'PROA-SEM ELAN SPORTIF CHALONNAIS', 'ES CHALON SUR SAONE', '71100 CHALON-SUR-SAONE', 'France'),
(10, 'PROA-SLUC NANCY BASKET PRO', 'SLUC NANCY BASKET ASSOCIATION', '54000 NANCY', 'France'),
(11, 'PROA-SAOS CHORALE DE ROANNE BASKET', 'ROANNE CHORALE', '42300 ROANNE', 'France'),
(12, 'PROA-ORLEANS LOIRET BASKET', 'ORLEANS BASKET', '45100 ORLEANS', 'France'),
(13, 'PROA-SEM ELAN BEARNAIS PAU LACQ ORTHEZ', 'ELAN BEARNAIS PAU LACQ ORTHEZ (PAU NORD EST)', '64000 PAU', 'France'),
(14, 'UNION POITIERS BASKET 86', 'UNION POITIERS BASKET 86', '86000 POITIERS', 'France');
-- --------------------------------------------------------
--
-- Structure de la table `joueur`
--
-- Création: Mar 29 Mars 2011 à 01:16
--
CREATE TABLE IF NOT EXISTS `joueur` (
`idJoueur` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(45) DEFAULT NULL,
`prenom` varchar(45) DEFAULT NULL,
`idEquipe` int(11) NOT NULL,
PRIMARY KEY (`idJoueur`),
KEY `idx_Joueur_Equipe` (`idEquipe`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=141 ;
--
-- Contenu de la table `joueur`
--
INSERT INTO `joueur` (`idJoueur`, `nom`, `prenom`, `idEquipe`) VALUES
(1, 'J1', NULL, 1),
(2, 'J2', NULL, 1),
(3, 'J3', NULL, 1),
(4, 'J4', NULL, 1),
(5, 'J5', NULL, 1),
(6, 'J6', NULL, 1),
(7, 'J7', NULL, 1),
(8, 'J8', NULL, 1),
(9, 'J9', NULL, 1),
(10, 'J10', NULL, 1),
(11, 'J11', NULL, 2),
(12, 'J12', NULL, 2),
(13, 'J13', NULL, 2),
(14, 'J14', NULL, 2),
(15, 'J15', NULL, 2),
(16, 'J16', NULL, 2),
(17, 'J17', NULL, 2),
(18, 'J18', NULL, 2),
(19, 'J19', NULL, 2),
(20, 'J20', NULL, 2),
(21, 'J21', NULL, 3),
(22, 'J22', NULL, 3),
(23, 'J23', NULL, 3),
(24, 'J24', NULL, 3),
(25, 'J25', NULL, 3),
(26, 'J26', NULL, 3),
(27, 'J27', NULL, 3),
(28, 'J28', NULL, 3),
(29, 'J29', NULL, 3),
(30, 'J30', NULL, 3),
(31, 'J31', NULL, 4),
(32, 'J32', NULL, 4),
(33, 'J33', NULL, 4),
(34, 'J34', NULL, 4),
(35, 'J35', NULL, 4),
(36, 'J36', NULL, 4),
(37, 'J37', NULL, 4),
(38, 'J38', NULL, 4),
(39, 'J39', NULL, 4),
(40, 'J40', NULL, 4),
(41, 'J41', NULL, 5),
(42, 'J42', NULL, 5),
(43, 'J43', NULL, 5),
(44, 'J44', NULL, 5),
(45, 'J45', NULL, 5),
(46, 'J46', NULL, 5),
(47, 'J47', NULL, 5),
(48, 'J48', NULL, 5),
(49, 'J49', NULL, 5),
(50, 'J50', NULL, 5),
(51, 'J51', NULL, 6),
(52, 'J52', NULL, 6),
(53, 'J53', NULL, 6),
(54, 'J54', NULL, 6),
(55, 'J55', NULL, 6),
(56, 'J56', NULL, 6),
(57, 'J57', NULL, 6),
(58, 'J58', NULL, 6),
(59, 'J59', NULL, 6),
(60, 'J60', NULL, 6),
(61, 'J61', NULL, 7),
(62, 'J62', NULL, 7),
(63, 'J63', NULL, 7),
(64, 'J64', NULL, 7),
(65, 'J65', NULL, 7),
(66, 'J66', NULL, 7),
(67, 'J67', NULL, 7),
(68, 'J68', NULL, 7),
(69, 'J69', NULL, 7),
(70, 'J70', NULL, 7),
(71, 'J71', NULL, 8),
(72, 'J72', NULL, 8),
(73, 'J73', NULL, 8),
(74, 'J74', NULL, 8),
(75, 'J75', NULL, 8),
(76, 'J76', NULL, 8),
(77, 'J77', NULL, 8),
(78, 'J78', NULL, 8),
(79, 'J79', NULL, 8),
(80, 'J80', NULL, 8),
(81, 'J81', NULL, 9),
(82, 'J82', NULL, 9),
(83, 'J83', NULL, 9),
(84, 'J84', NULL, 9),
(85, 'J85', NULL, 9),
(86, 'J86', NULL, 9),
(87, 'J87', NULL, 9),
(88, 'J88', NULL, 9),
(89, 'J89', NULL, 9),
(90, 'J90', NULL, 9),
(91, 'J91', NULL, 10),
(92, 'J92', NULL, 10),
(93, 'J93', NULL, 10),
(94, 'J94', NULL, 10),
(95, 'J95', NULL, 10),
(96, 'J96', NULL, 10),
(97, 'J97', NULL, 10),
(98, 'J98', NULL, 10),
(99, 'J99', NULL, 10),
(100, 'J100', NULL, 10),
(101, 'J101', NULL, 11),
(102, 'J102', NULL, 11),
(103, 'J103', NULL, 11),
(104, 'J104', NULL, 11),
(105, 'J105', NULL, 11),
(106, 'J106', NULL, 11),
(107, 'J107', NULL, 11),
(108, 'J108', NULL, 11),
(109, 'J109', NULL, 11),
(110, 'J110', NULL, 11),
(111, 'J111', NULL, 12),
(112, 'J112', NULL, 12),
(113, 'J113', NULL, 12),
(114, 'J114', NULL, 12),
(115, 'J115', NULL, 12),
(116, 'J116', NULL, 12),
(117, 'J117', NULL, 12),
(118, 'J118', NULL, 12),
(119, 'J119', NULL, 12),
(120, 'J120', NULL, 12),
(121, 'J121', NULL, 13),
(122, 'J122', NULL, 13),
(123, 'J123', NULL, 13),
(124, 'J124', NULL, 13),
(125, 'J125', NULL, 13),
(126, 'J126', NULL, 13),
(127, 'J127', NULL, 13),
(128, 'J128', NULL, 13),
(129, 'J129', NULL, 13),
(130, 'J130', NULL, 13),
(131, 'J131', NULL, 14),
(132, 'J132', NULL, 14),
(133, 'J133', NULL, 14),
(134, 'J134', NULL, 14),
(135, 'J135', NULL, 14),
(136, 'J136', NULL, 14),
(137, 'J137', NULL, 14),
(138, 'J138', NULL, 14),
(139, 'J139', NULL, 14),
(140, 'J140', NULL, 14);
-- --------------------------------------------------------
--
-- Structure de la table `match`
--
-- Création: Mar 29 Mars 2011 à 01:16
--
CREATE TABLE IF NOT EXISTS `match` (
`idMatch` int(11) NOT NULL AUTO_INCREMENT,
`date` datetime DEFAULT NULL,
`lieu` varchar(255) DEFAULT NULL,
`idEquipe_locaux` int(11) DEFAULT NULL,
`idEquipe_visiteurs` int(11) DEFAULT NULL,
PRIMARY KEY (`idMatch`),
KEY `idx_Match_Equipe1` (`idEquipe_locaux`),
KEY `idx_Match_Equipe2` (`idEquipe_visiteurs`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
--
-- Contenu de la table `match`
--
INSERT INTO `match` (`idMatch`, `date`, `lieu`, `idEquipe_locaux`, `idEquipe_visiteurs`) VALUES
(1, '2011-03-25 20:30:00', 'SALLE PIERRE DE COUBERTIN Avenue Georges Laffond F - 75016 PARIS 16E ARRONDISSEMENT', 1, 2),
(2, '2011-04-05 20:00:00', 'ASTROBALLE 40 Avenue Marcel Cerdan F - 69100 VILLEURBANNE', 3, 4),
(3, '2011-03-26 20:00:00', 'COMPLEXE SPORTIF ANTARES 2 Avenue ANTARES F - 72100 LE MANS', 5, 6),
(4, '2011-03-26 20:00:00', 'HALL RHENUS Place de la foire Expositions F - 67000 STRASBOURG', 7, 8),
(5, '2011-03-26 20:00:00', 'LE COLISEE GRANDE SALLE Rue d Amsterdam F - 71100 CHALON-SUR-SAONE', 9, 10),
(6, '2011-03-26 20:00:00', 'HDS ANDRE VACHERESSE Rue des Vernes PARC FONTALON F - 42300 ROANNE', 11, 12),
(7, '2011-03-25 20:00:00', 'CENTRE FORMATION BASKETBALL Rue Pierre Massé F - 64000 PAU', 13, 14);
-- --------------------------------------------------------
--
-- Structure de la table `participation`
--
-- Création: Mar 29 Mars 2011 à 01:16
--
CREATE TABLE IF NOT EXISTS `participation` (
`idMatch` int(11) NOT NULL,
`idEquipe` int(11) NOT NULL,
`idJoueur` int(11) NOT NULL,
`numero` int(11) DEFAULT NULL,
`position` enum('arrière','ailier gauche','pivot','ailier droit','meneur de jeu') DEFAULT NULL,
`remplaçant` tinyint(1) DEFAULT '0',
PRIMARY KEY (`idJoueur`,`idEquipe`,`idMatch`),
KEY `idx_Participation_Joueur` (`idJoueur`),
KEY `idx_Participation_Equipe` (`idEquipe`),
KEY `idx_Participation_Match` (`idMatch`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Contenu de la table `participation`
--
INSERT INTO `participation` (`idMatch`, `idEquipe`, `idJoueur`, `numero`, `position`, `remplaçant`) VALUES
(1, 1, 1, NULL, 'arrière', 0),
(1, 1, 2, NULL, 'ailier gauche', 0),
(1, 1, 3, NULL, 'pivot', 0),
(1, 1, 4, NULL, 'ailier droit', 0),
(1, 1, 5, NULL, 'meneur de jeu', 0),
(1, 1, 6, NULL, 'arrière', 1),
(1, 1, 7, NULL, 'ailier gauche', 1),
(1, 1, 8, NULL, 'pivot', 1),
(1, 1, 9, NULL, 'ailier droit', 1),
(1, 1, 10, NULL, 'meneur de jeu', 1),
(1, 2, 11, NULL, 'arrière', 0),
(1, 2, 12, NULL, 'ailier gauche', 0),
(1, 2, 13, NULL, 'pivot', 0),
(1, 2, 14, NULL, 'ailier droit', 0),
(1, 2, 15, NULL, 'meneur de jeu', 0),
(1, 2, 16, NULL, 'arrière', 1),
(1, 2, 17, NULL, 'ailier gauche', 1),
(1, 2, 18, NULL, 'pivot', 1),
(1, 2, 19, NULL, 'ailier droit', 1),
(1, 2, 20, NULL, 'meneur de jeu', 1),
(2, 3, 21, NULL, 'arrière', 0),
(2, 3, 22, NULL, 'ailier gauche', 0),
(2, 3, 23, NULL, 'pivot', 0),
(2, 3, 24, NULL, 'ailier droit', 0),
(2, 3, 25, NULL, 'meneur de jeu', 0),
(2, 3, 26, NULL, 'arrière', 1),
(2, 3, 27, NULL, 'ailier gauche', 1),
(2, 3, 28, NULL, 'pivot', 1),
(2, 3, 29, NULL, 'ailier droit', 1),
(2, 3, 30, NULL, 'meneur de jeu', 1),
(2, 4, 31, NULL, 'arrière', 0),
(2, 4, 32, NULL, 'ailier gauche', 0),
(2, 4, 33, NULL, 'pivot', 0),
(2, 4, 34, NULL, 'ailier droit', 0),
(2, 4, 35, NULL, 'meneur de jeu', 0),
(2, 4, 36, NULL, 'arrière', 1),
(2, 4, 37, NULL, 'ailier gauche', 1),
(2, 4, 38, NULL, 'pivot', 1),
(2, 4, 39, NULL, 'ailier droit', 1),
(2, 4, 40, NULL, 'meneur de jeu', 1),
(3, 5, 41, NULL, 'arrière', 0),
(3, 5, 42, NULL, 'ailier gauche', 0),
(3, 5, 43, NULL, 'pivot', 0),
(3, 5, 44, NULL, 'ailier droit', 0),
(3, 5, 45, NULL, 'meneur de jeu', 0),
(3, 5, 46, NULL, 'arrière', 1),
(3, 5, 47, NULL, 'ailier gauche', 1),
(3, 5, 48, NULL, 'pivot', 1),
(3, 5, 49, NULL, 'ailier droit', 1),
(3, 5, 50, NULL, 'meneur de jeu', 1),
(3, 6, 51, NULL, 'arrière', 0),
(3, 6, 52, NULL, 'ailier gauche', 0),
(3, 6, 53, NULL, 'pivot', 0),
(3, 6, 54, NULL, 'ailier droit', 0),
(3, 6, 55, NULL, 'meneur de jeu', 0),
(3, 6, 56, NULL, 'arrière', 1),
(3, 6, 57, NULL, 'ailier gauche', 1),
(3, 6, 58, NULL, 'pivot', 1),
(3, 6, 59, NULL, 'ailier droit', 1),
(3, 6, 60, NULL, 'meneur de jeu', 1),
(4, 7, 61, NULL, 'arrière', 0),
(4, 7, 62, NULL, 'ailier gauche', 0),
(4, 7, 63, NULL, 'pivot', 0),
(4, 7, 64, NULL, 'ailier droit', 0),
(4, 7, 65, NULL, 'meneur de jeu', 0),
(4, 7, 66, NULL, 'arrière', 1),
(4, 7, 67, NULL, 'ailier gauche', 1),
(4, 7, 68, NULL, 'pivot', 1),
(4, 7, 69, NULL, 'ailier droit', 1),
(4, 7, 70, NULL, 'meneur de jeu', 1),
(4, 8, 71, NULL, 'arrière', 0),
(4, 8, 72, NULL, 'ailier gauche', 0),
(4, 8, 73, NULL, 'pivot', 0),
(4, 8, 74, NULL, 'ailier droit', 0),
(4, 8, 75, NULL, 'meneur de jeu', 0),
(4, 8, 76, NULL, 'arrière', 1),
(4, 8, 77, NULL, 'ailier gauche', 1),
(4, 8, 78, NULL, 'pivot', 1),
(4, 8, 79, NULL, 'ailier droit', 1),
(4, 8, 80, NULL, 'meneur de jeu', 1),
(5, 9, 81, NULL, 'arrière', 0),
(5, 9, 82, NULL, 'ailier gauche', 0),
(5, 9, 83, NULL, 'pivot', 0),
(5, 9, 84, NULL, 'ailier droit', 0),
(5, 9, 85, NULL, 'meneur de jeu', 0),
(5, 9, 86, NULL, 'arrière', 1),
(5, 9, 87, NULL, 'ailier gauche', 1),
(5, 9, 88, NULL, 'pivot', 1),
(5, 9, 89, NULL, 'ailier droit', 1),
(5, 9, 90, NULL, 'meneur de jeu', 1),
(5, 10, 91, NULL, 'arrière', 0),
(5, 10, 92, NULL, 'ailier gauche', 0),
(5, 10, 93, NULL, 'pivot', 0),
(5, 10, 94, NULL, 'ailier droit', 0),
(5, 10, 95, NULL, 'meneur de jeu', 0),
(5, 10, 96, NULL, 'arrière', 1),
(5, 10, 97, NULL, 'ailier gauche', 1),
(5, 10, 98, NULL, 'pivot', 1),
(5, 10, 99, NULL, 'ailier droit', 1),
(5, 10, 100, NULL, 'meneur de jeu', 1),
(6, 11, 101, NULL, 'arrière', 0),
(6, 11, 102, NULL, 'ailier gauche', 0),
(6, 11, 103, NULL, 'pivot', 0),
(6, 11, 104, NULL, 'ailier droit', 0),
(6, 11, 105, NULL, 'meneur de jeu', 0),
(6, 11, 106, NULL, 'arrière', 1),
(6, 11, 107, NULL, 'ailier gauche', 1),
(6, 11, 108, NULL, 'pivot', 1),
(6, 11, 109, NULL, 'ailier droit', 1),
(6, 11, 110, NULL, 'meneur de jeu', 1),
(6, 12, 111, NULL, 'arrière', 0),
(6, 12, 112, NULL, 'ailier gauche', 0),
(6, 12, 113, NULL, 'pivot', 0),
(6, 12, 114, NULL, 'ailier droit', 0),
(6, 12, 115, NULL, 'meneur de jeu', 0),
(6, 12, 116, NULL, 'arrière', 1),
(6, 12, 117, NULL, 'ailier gauche', 1),
(6, 12, 118, NULL, 'pivot', 1),
(6, 12, 119, NULL, 'ailier droit', 1),
(6, 12, 120, NULL, 'meneur de jeu', 1),
(7, 13, 121, NULL, 'arrière', 0),
(7, 13, 122, NULL, 'ailier gauche', 0),
(7, 13, 123, NULL, 'pivot', 0),
(7, 13, 124, NULL, 'ailier droit', 0),
(7, 13, 125, NULL, 'meneur de jeu', 0),
(7, 13, 126, NULL, 'arrière', 1),
(7, 13, 127, NULL, 'ailier gauche', 1),
(7, 13, 128, NULL, 'pivot', 1),
(7, 13, 129, NULL, 'ailier droit', 1),
(7, 13, 130, NULL, 'meneur de jeu', 1),
(7, 14, 131, NULL, 'arrière', 0),
(7, 14, 132, NULL, 'ailier gauche', 0),
(7, 14, 133, NULL, 'pivot', 0),
(7, 14, 134, NULL, 'ailier droit', 0),
(7, 14, 135, NULL, 'meneur de jeu', 0),
(7, 14, 136, NULL, 'arrière', 1),
(7, 14, 137, NULL, 'ailier gauche', 1),
(7, 14, 138, NULL, 'pivot', 1),
(7, 14, 139, NULL, 'ailier droit', 1),
(7, 14, 140, NULL, 'meneur de jeu', 1);
--
-- Contraintes pour les tables exportées
--
--
-- Contraintes pour la table `joueur`
--
ALTER TABLE `joueur`
ADD CONSTRAINT `fk_Joueur_Equipe` FOREIGN KEY (`idEquipe`) REFERENCES `equipe` (`idEquipe`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Contraintes pour la table `match`
--
ALTER TABLE `match`
ADD CONSTRAINT `fk_Match_Equipe1` FOREIGN KEY (`idEquipe_locaux`) REFERENCES `equipe` (`idEquipe`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_Match_Equipe2` FOREIGN KEY (`idEquipe_visiteurs`) REFERENCES `equipe` (`idEquipe`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Contraintes pour la table `participation`
--
ALTER TABLE `participation`
ADD CONSTRAINT `fk_Participation_Joueur` FOREIGN KEY (`idJoueur`) REFERENCES `joueur` (`idJoueur`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_Participation_Equipe` FOREIGN KEY (`idEquipe`) REFERENCES `equipe` (`idEquipe`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_Participation_Match` FOREIGN KEY (`idMatch`) REFERENCES `match` (`idMatch`) ON DELETE NO ACTION ON UPDATE NO ACTION;
[/sql]
Revenons aux questions que tu poses :
[quote]
je veux récupérer les joueurs qui sont sur la feuille de match,
[/quote]
La requête SQL qui répond à cette question, liste les joueurs par équipe pour un match X donné :
[sql]
SELECT e.idEquipe, e.nom, j.idJoueur, j.nom, j.prenom
FROM participation p JOIN joueur j ON p.idJoueur = j.idJoueur JOIN equipe e ON p.idEquipe = e.idEquipe
WHERE p.idMatch=?
ORDER BY e.nom, j.nom
[/sql]
[i]Note: Les ? dans la requête sont des paramètres externes à fournir avant l'exécution.[/i]
[quote]
de plus lorsque le membre souhaite changer sa composition d'équipe il devras ainsi lancer 10 UPDATE
[/quote]
C'est normal, car tu as 10 joueurs par équipe mais le nombre d'UPDATE effectif peut ne pas aller jusqu'à l'estimation maximale de 10, car la recomposition de l'équipe peut ne pas toucher tous les joueurs. On raisonne donc en UPDATE unitaire réalisé par la requête suivante, qui remplace un joueur par un autre pour un match X donné et une équipe Y donnée :
[sql]
UPDATE participation SET idJoueur=?, numero=?, position=?, remplaçant=? WHERE idMatch=? AND idEquipe=?
[/sql]
[i]Note: Les ? dans la requête sont des paramètres externes à fournir avant l'exécution.[/i]