par
Demonaz » 10 août 2007, 16:09
Et bé...
Je vais demander à ma copine une explication au ralenti vu que c'est son job les bases de données

J'ai une erreur par contre, qui me dit que chaque table dérivé doit avoir un alias...
Je retourne le truc dans tous les sens sans trouver la soluce (entre 2 appels téléphoniques c'est pratique !)
Merci en tout cas du coup de main !
Je mettrais peut être mon script total en téléchargement un de ces 4, on fait des pronos sur les scores, avec un classement basé sur les bons pronos et des bonifications sur le score.
Sympatoche entre potes
J'ai une table prono_teams qui contient la colonne team_abbr, me servant pour repérer les équipes (j'aurais pu mettre des chiffres mais c'est moins causant pour une modif à la main !)
Edit: J'ai un peu modifier la requête pour coller à ma base et faire le tri sur le nom des équipes, mais ça coince au fur et à mesure...
Code : Tout sélectionner
SELECT list.team_abbr, list.team, VDom.c, VExt.c, NDom.c, NExt.c, DDom.c, DExt.c,
(VDom.sc1+VExt.sc2+NDom.sc1+NExt.sc2+DDom.sc1+DExt.sc2) AS P,
(VDom.sc2+VExt.sc1+NDom.sc2+NExt.sc1+DDom.sc2+DExt.sc1) AS C,
(P-C) AS Diff,
(VDom.c *3 + VExt.c *3 + NDom.c + NExt.c) AS points
FROM (
SELECT team_abbr, team
FROM prono_teams
ORDER BY team
) AS list
LEFT JOIN (
SELECT team1, SUM( score_team1 ) AS sc1, SUM( score_team2 ) AS sc2, COUNT( * ) AS c
FROM prono_matchs
WHERE score_team1 > score_team2
AND score_team1 <> ''
GROUP BY team1
) AS VDom ON list.team_abbr = VDom.team1
LEFT JOIN (
SELECT team2, SUM( score_team1 ) AS sc1, SUM( score_team2 ) AS sc2, COUNT( * ) AS c
FROM prono_matchs
WHERE score_team1 < score_team2
AND score_team1 <> ''
GROUP BY team2
) AS VExt ON list.team_abbr = VExt.team2
LEFT JOIN (
SELECT team1, SUM( score_team1 ) AS sc1, SUM( score_team2 ) AS sc2, COUNT( * ) AS c
FROM prono_matchs
WHERE score_team1 = score_team2
AND score_team1 <> ''
GROUP BY team1
) AS NDom ON list.team_abbr = NDom.team1
LEFT JOIN (
SELECT team2, SUM( score_team1 ) AS sc1, SUM( score_team2 ) AS sc2, COUNT( * ) AS c
FROM prono_matchs
WHERE score_team1 = score_team2
AND score_team1 <> ''
GROUP BY team2
) AS NExt ON list.team_abbr = NExt.team2
LEFT JOIN (
SELECT team1,SUM( score_team1 ) AS sc1, SUM( score_team2 ) AS sc2, COUNT( * ) AS c
FROM prono_matchs
WHERE score_team1 < score_team2
AND score_team1 <> ''
GROUP BY team1
) AS DDom ON list.team_abbr = DDom.team1
LEFT JOIN (
SELECT team2, SUM( score_team1 ) AS sc1, SUM( score_team2 ) AS sc2, COUNT( * ) AS c
FROM prono_matchs
WHERE score_team1 > score_team2
AND score_team1 <> ''
GROUP BY team2
) AS DExt ON list.team_abbr = DExt.team2
ORDER BY
points DESC,
Diff DESC,
P DESC,
C ASC,
list.team ASC
Voilà ma table prono_teams
Edit à 16h32: ça colle plus à ce que je veux, par contre il me dit que P n'existe pas dans les champs...
Si je l'enlève, avec les buts Contre et la différence de buts, ça passe.
Voilà ma structure de table avec les données
Code : Tout sélectionner
-- Structure de la table `prono_matchs`
--
CREATE TABLE `prono_matchs` (
`id_match` tinyint(4) NOT NULL auto_increment,
`journee` tinyint(4) NOT NULL,
`team1` text collate latin1_general_ci NOT NULL,
`team2` text collate latin1_general_ci NOT NULL,
`score_team1` text collate latin1_general_ci NOT NULL,
`score_team2` text collate latin1_general_ci NOT NULL,
`date` text collate latin1_general_ci NOT NULL,
UNIQUE KEY `id_match` (`id_match`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=31 ;
--
-- Contenu de la table `prono_matchs`
--
INSERT INTO `prono_matchs` VALUES (1, 1, 'bordeaux', 'rcl', '1', '0', '1186250400');
INSERT INTO `prono_matchs` VALUES (2, 1, 'smc', 'ogcn', '1', '0', '1186250400');
INSERT INTO `prono_matchs` VALUES (3, 1, 'muc', 'metz', '1', '0', '1186329600');
INSERT INTO `prono_matchs` VALUES (4, 1, 'losc', 'lorient', '0', '0', '1186250400');
INSERT INTO `prono_matchs` VALUES (5, 1, 'ol', 'aja', '2', '0', '1186340400');
INSERT INTO `prono_matchs` VALUES (6, 1, 'asm', 'asse', '1', '1', '1186250400');
INSERT INTO `prono_matchs` VALUES (7, 1, 'psg', 'sochaux', '0', '0', '1186250400');
INSERT INTO `prono_matchs` VALUES (8, 1, 'sr', 'asnl', '0', '2', '1186250400');
INSERT INTO `prono_matchs` VALUES (9, 1, 'rcs', 'om', '0', '0', '1186240200');
INSERT INTO `prono_matchs` VALUES (10, 1, 'va', 'tfc', '3', '1', '1186250400');
INSERT INTO `prono_matchs` VALUES (11, 2, 'tfc', 'ol', '', '', '1186845000');
INSERT INTO `prono_matchs` VALUES (12, 2, 'asnl', 'smc', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (13, 2, 'lorient', 'asm', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (14, 2, 'om', 'sr', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (15, 2, 'sochaux', 'muc', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (16, 2, 'aja', 'bordeaux', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (17, 2, 'ogcn', 'rcs', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (18, 2, 'asse', 'va', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (19, 2, 'metz', 'losc', '', '', '1186934400');
INSERT INTO `prono_matchs` VALUES (20, 2, 'rcl', 'psg', '', '', '1186941600');
INSERT INTO `prono_matchs` VALUES (21, 3, 'tfc', 'ol', '', '', '1186845000');
INSERT INTO `prono_matchs` VALUES (22, 3, 'aja', 'bordeaux', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (23, 3, 'lorient', 'asm', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (24, 3, 'om', 'sr', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (25, 3, 'asnl', 'smc', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (26, 3, 'ogcn', 'rcs', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (27, 3, 'asse', 'va', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (28, 3, 'sochaux', 'muc', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (29, 3, 'metz', 'losc', '', '', '1186934400');
INSERT INTO `prono_matchs` VALUES (30, 3, 'rcl', 'psg', '', '', '1186941600');
-- --------------------------------------------------------
--
-- Structure de la table `prono_teams`
--
CREATE TABLE `prono_teams` (
`id` tinyint(4) NOT NULL auto_increment,
`team` text collate latin1_general_ci NOT NULL,
`team_abbr` text collate latin1_general_ci NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=21 ;
--
-- Contenu de la table `prono_teams`
--
INSERT INTO `prono_teams` VALUES (1, 'Marseille', 'om');
INSERT INTO `prono_teams` VALUES (2, 'Nancy', 'asnl');
INSERT INTO `prono_teams` VALUES (3, 'Lens', 'rcl');
INSERT INTO `prono_teams` VALUES (4, 'Sochaux', 'sochaux');
INSERT INTO `prono_teams` VALUES (5, 'Lorient', 'lorient');
INSERT INTO `prono_teams` VALUES (6, 'Toulouse', 'tfc');
INSERT INTO `prono_teams` VALUES (7, 'Strasbourg', 'rcs');
INSERT INTO `prono_teams` VALUES (8, 'Rennes', 'sr');
INSERT INTO `prono_teams` VALUES (9, 'Bordeaux', 'bordeaux');
INSERT INTO `prono_teams` VALUES (10, 'Metz', 'metz');
INSERT INTO `prono_teams` VALUES (11, 'Lyon', 'ol');
INSERT INTO `prono_teams` VALUES (12, 'Monaco', 'asm');
INSERT INTO `prono_teams` VALUES (13, 'Le Mans', 'muc');
INSERT INTO `prono_teams` VALUES (14, 'Caen', 'smc');
INSERT INTO `prono_teams` VALUES (15, 'Lille', 'losc');
INSERT INTO `prono_teams` VALUES (16, 'Auxerre', 'aja');
INSERT INTO `prono_teams` VALUES (17, 'Paris', 'psg');
INSERT INTO `prono_teams` VALUES (18, 'Saint Etienne', 'asse');
INSERT INTO `prono_teams` VALUES (19, 'Valenciennes', 'va');
INSERT INTO `prono_teams` VALUES (20, 'Nice', 'ogcn');
Et bé...
Je vais demander à ma copine une explication au ralenti vu que c'est son job les bases de données :)
J'ai une erreur par contre, qui me dit que chaque table dérivé doit avoir un alias...
Je retourne le truc dans tous les sens sans trouver la soluce (entre 2 appels téléphoniques c'est pratique !)
Merci en tout cas du coup de main !
Je mettrais peut être mon script total en téléchargement un de ces 4, on fait des pronos sur les scores, avec un classement basé sur les bons pronos et des bonifications sur le score.
Sympatoche entre potes :)
J'ai une table prono_teams qui contient la colonne team_abbr, me servant pour repérer les équipes (j'aurais pu mettre des chiffres mais c'est moins causant pour une modif à la main !)
Edit: J'ai un peu modifier la requête pour coller à ma base et faire le tri sur le nom des équipes, mais ça coince au fur et à mesure...
[code] SELECT list.team_abbr, list.team, VDom.c, VExt.c, NDom.c, NExt.c, DDom.c, DExt.c,
(VDom.sc1+VExt.sc2+NDom.sc1+NExt.sc2+DDom.sc1+DExt.sc2) AS P,
(VDom.sc2+VExt.sc1+NDom.sc2+NExt.sc1+DDom.sc2+DExt.sc1) AS C,
(P-C) AS Diff,
(VDom.c *3 + VExt.c *3 + NDom.c + NExt.c) AS points
FROM (
SELECT team_abbr, team
FROM prono_teams
ORDER BY team
) AS list
LEFT JOIN (
SELECT team1, SUM( score_team1 ) AS sc1, SUM( score_team2 ) AS sc2, COUNT( * ) AS c
FROM prono_matchs
WHERE score_team1 > score_team2
AND score_team1 <> ''
GROUP BY team1
) AS VDom ON list.team_abbr = VDom.team1
LEFT JOIN (
SELECT team2, SUM( score_team1 ) AS sc1, SUM( score_team2 ) AS sc2, COUNT( * ) AS c
FROM prono_matchs
WHERE score_team1 < score_team2
AND score_team1 <> ''
GROUP BY team2
) AS VExt ON list.team_abbr = VExt.team2
LEFT JOIN (
SELECT team1, SUM( score_team1 ) AS sc1, SUM( score_team2 ) AS sc2, COUNT( * ) AS c
FROM prono_matchs
WHERE score_team1 = score_team2
AND score_team1 <> ''
GROUP BY team1
) AS NDom ON list.team_abbr = NDom.team1
LEFT JOIN (
SELECT team2, SUM( score_team1 ) AS sc1, SUM( score_team2 ) AS sc2, COUNT( * ) AS c
FROM prono_matchs
WHERE score_team1 = score_team2
AND score_team1 <> ''
GROUP BY team2
) AS NExt ON list.team_abbr = NExt.team2
LEFT JOIN (
SELECT team1,SUM( score_team1 ) AS sc1, SUM( score_team2 ) AS sc2, COUNT( * ) AS c
FROM prono_matchs
WHERE score_team1 < score_team2
AND score_team1 <> ''
GROUP BY team1
) AS DDom ON list.team_abbr = DDom.team1
LEFT JOIN (
SELECT team2, SUM( score_team1 ) AS sc1, SUM( score_team2 ) AS sc2, COUNT( * ) AS c
FROM prono_matchs
WHERE score_team1 > score_team2
AND score_team1 <> ''
GROUP BY team2
) AS DExt ON list.team_abbr = DExt.team2
ORDER BY
points DESC,
Diff DESC,
P DESC,
C ASC,
list.team ASC[/code]
Voilà ma table prono_teams
[img]http://img74.imageshack.us/img74/306/equipeswi4.jpg[/img]
Edit à 16h32: ça colle plus à ce que je veux, par contre il me dit que P n'existe pas dans les champs...
Si je l'enlève, avec les buts Contre et la différence de buts, ça passe.
Voilà ma structure de table avec les données
[code]-- Structure de la table `prono_matchs`
--
CREATE TABLE `prono_matchs` (
`id_match` tinyint(4) NOT NULL auto_increment,
`journee` tinyint(4) NOT NULL,
`team1` text collate latin1_general_ci NOT NULL,
`team2` text collate latin1_general_ci NOT NULL,
`score_team1` text collate latin1_general_ci NOT NULL,
`score_team2` text collate latin1_general_ci NOT NULL,
`date` text collate latin1_general_ci NOT NULL,
UNIQUE KEY `id_match` (`id_match`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=31 ;
--
-- Contenu de la table `prono_matchs`
--
INSERT INTO `prono_matchs` VALUES (1, 1, 'bordeaux', 'rcl', '1', '0', '1186250400');
INSERT INTO `prono_matchs` VALUES (2, 1, 'smc', 'ogcn', '1', '0', '1186250400');
INSERT INTO `prono_matchs` VALUES (3, 1, 'muc', 'metz', '1', '0', '1186329600');
INSERT INTO `prono_matchs` VALUES (4, 1, 'losc', 'lorient', '0', '0', '1186250400');
INSERT INTO `prono_matchs` VALUES (5, 1, 'ol', 'aja', '2', '0', '1186340400');
INSERT INTO `prono_matchs` VALUES (6, 1, 'asm', 'asse', '1', '1', '1186250400');
INSERT INTO `prono_matchs` VALUES (7, 1, 'psg', 'sochaux', '0', '0', '1186250400');
INSERT INTO `prono_matchs` VALUES (8, 1, 'sr', 'asnl', '0', '2', '1186250400');
INSERT INTO `prono_matchs` VALUES (9, 1, 'rcs', 'om', '0', '0', '1186240200');
INSERT INTO `prono_matchs` VALUES (10, 1, 'va', 'tfc', '3', '1', '1186250400');
INSERT INTO `prono_matchs` VALUES (11, 2, 'tfc', 'ol', '', '', '1186845000');
INSERT INTO `prono_matchs` VALUES (12, 2, 'asnl', 'smc', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (13, 2, 'lorient', 'asm', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (14, 2, 'om', 'sr', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (15, 2, 'sochaux', 'muc', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (16, 2, 'aja', 'bordeaux', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (17, 2, 'ogcn', 'rcs', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (18, 2, 'asse', 'va', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (19, 2, 'metz', 'losc', '', '', '1186934400');
INSERT INTO `prono_matchs` VALUES (20, 2, 'rcl', 'psg', '', '', '1186941600');
INSERT INTO `prono_matchs` VALUES (21, 3, 'tfc', 'ol', '', '', '1186845000');
INSERT INTO `prono_matchs` VALUES (22, 3, 'aja', 'bordeaux', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (23, 3, 'lorient', 'asm', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (24, 3, 'om', 'sr', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (25, 3, 'asnl', 'smc', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (26, 3, 'ogcn', 'rcs', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (27, 3, 'asse', 'va', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (28, 3, 'sochaux', 'muc', '', '', '1186855200');
INSERT INTO `prono_matchs` VALUES (29, 3, 'metz', 'losc', '', '', '1186934400');
INSERT INTO `prono_matchs` VALUES (30, 3, 'rcl', 'psg', '', '', '1186941600');
-- --------------------------------------------------------
--
-- Structure de la table `prono_teams`
--
CREATE TABLE `prono_teams` (
`id` tinyint(4) NOT NULL auto_increment,
`team` text collate latin1_general_ci NOT NULL,
`team_abbr` text collate latin1_general_ci NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=21 ;
--
-- Contenu de la table `prono_teams`
--
INSERT INTO `prono_teams` VALUES (1, 'Marseille', 'om');
INSERT INTO `prono_teams` VALUES (2, 'Nancy', 'asnl');
INSERT INTO `prono_teams` VALUES (3, 'Lens', 'rcl');
INSERT INTO `prono_teams` VALUES (4, 'Sochaux', 'sochaux');
INSERT INTO `prono_teams` VALUES (5, 'Lorient', 'lorient');
INSERT INTO `prono_teams` VALUES (6, 'Toulouse', 'tfc');
INSERT INTO `prono_teams` VALUES (7, 'Strasbourg', 'rcs');
INSERT INTO `prono_teams` VALUES (8, 'Rennes', 'sr');
INSERT INTO `prono_teams` VALUES (9, 'Bordeaux', 'bordeaux');
INSERT INTO `prono_teams` VALUES (10, 'Metz', 'metz');
INSERT INTO `prono_teams` VALUES (11, 'Lyon', 'ol');
INSERT INTO `prono_teams` VALUES (12, 'Monaco', 'asm');
INSERT INTO `prono_teams` VALUES (13, 'Le Mans', 'muc');
INSERT INTO `prono_teams` VALUES (14, 'Caen', 'smc');
INSERT INTO `prono_teams` VALUES (15, 'Lille', 'losc');
INSERT INTO `prono_teams` VALUES (16, 'Auxerre', 'aja');
INSERT INTO `prono_teams` VALUES (17, 'Paris', 'psg');
INSERT INTO `prono_teams` VALUES (18, 'Saint Etienne', 'asse');
INSERT INTO `prono_teams` VALUES (19, 'Valenciennes', 'va');
INSERT INTO `prono_teams` VALUES (20, 'Nice', 'ogcn');[/code]