estrapolare dei dati da 4 tabelle sql

  • Creatore Discussione Creatore Discussione mariodp
  • Data di inizio Data di inizio

mariodp

Nuovo Utente
21 Gen 2010
28
0
0
Ciao a tutti,
premetto subito che sono un autodidatta quindi abbiate pazienza…….:pernacchi
Problema: estrapolare dei dati da 4 tabelle, non tutti ( cosa che o fatto e funziona tutto ) ma solo quelli che mi servono ordina per id, numero settinmane e data .
Lo scopo è visualizzare una tabella con 8 righe e quatrro colonne.
Il database si chiama campionato le 4 tabelle si chiamano e sono così composte esempio:
INSERT INTO `partite` (`id`, `npartita`, `sq1`, `sq2`, `n_settimana`)
INSERT INTO `risultati` (`id`, `squadra1`, `squadra2`, `gol1`, `gol2`)
INSERT INTO `settimana_data` (`id`, `settimana`, `data`)
INSERT INTO `squadre` (`id`, `squadra`)
Lo scopo è quello di visualizzare per settimana il calendario, partite di calcio, richiamandolo per numero settimane o per data settimana.
Fino a qui funziona tutto riesco ad visualizzare le tabelle con tutti i dati quello che al momento non mi riesce di fare è visualizzare solo una settimana per volta tramite link con i risultati precaricati nel Dabase.
E’ un mese che ci sto sbattendo la testa, mi basta anche un aiutino per mettermi nella buona strada.
 
ciao
dovresti specificare meglio.
intanto
tabella `partite` (`id`, `npartita`, `sq1`, `sq2`, `n_settimana`)
tabella `risultati` (`id`, `squadra1`, `squadra2`, `gol1`, `gol2`)
quel sq1 e sq2 sono la stessa cosa di squadra1 e squadra2 o sono gli id della squadra che trovo in tabella squadre?
poi quali sono i dati che vuoi visualizzare per il determinato numero di settimana?
 
ciao
anche se non sono sicuro che funzi, puoi provare in questo modo

PHP:
<?php
$n_settimana=strftime("%U", time());//ritorna il numero della settimana dell'anno 01...
var_dump($n_settimana);//per verifica poi da togliere
/*
$n_settimana = (int)$n_settimana;//mettere (int) se si vuole toglere lo zero
*/
// in sq1 e sq2 e squadra1 e squadra2 ci sono i NOMI delle squadre ??
$query_stringa="SELECT * FROM partite as p, risultati as r WHERE p.sq1=r.squadra1 AND p.sq2=r.squadra2 AND p.n_settimana='$n_settimana'";
$query=mysql_query($query_stringa);
//a te mettere poi in ordine in una tabella
echo "risultati della $n_settimana &deg; settimana";
while($riga=mysql_fetch_assoc($query)){
	echo $riga['squadra1'];
	echo $riga['squadra2'];
	echo $riga['gol1'];
	echo $riga['gol2'];
}
?>
se non funzia posta gli eventuali errori che ti da
 
Grazie per avermi risposto, ti faccio vedere la struttura delle tabelle forse si puo semlificare il tutto

Codice:
CREATE TABLE IF NOT EXISTS `squadre` (
  
`id` int(11) NOT NULL,
  
`squadra` varchar(30) NOT NULL,
  PRIMARY KEY (`id`)
) 
ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `squadre` (`id`, `squadra`) VALUES
(1, 'Burano'),
(2, 'Giussaghese'),
(3, 'Cesarolo'),
(4, 'Noventa'),
(5, 'Gainiga'),
(6, 'EracleaCrepaldo'),
(7, 'Grassaga'),
(8, 'Sangiorgese'),
(9, 'La Salute'),
(10, 'Vigor'),
(11, 'Lugugnana'),
(12, 'San Stino'),
(13, 'Treporti'),
(14, 'Passarella'),
(15, 'SummagaMaz'),
(16, 'Ceggia');
-----------------------
CREATE TABLE IF NOT EXISTS `risultati` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `squadra1` int(11) NOT NULL,
  
  `squadra2` int(11) NOT NULL,
 
   `gol1` int(2) NOT NULL,
  
   `gol2` int(2) NOT NULL,


     PRIMARY KEY (`id`)
) 

    ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;



INSERT INTO `risultati` (`id`, `squadra1`, `squadra2`, `gol1`, `gol2`) VALUES
(1, 1, 2, 2, 1),
(2, 3, 4, 0, 1);
---------------------------------------------
Struttura della tabella `partite`
--

CREATE TABLE IF NOT EXISTS `partite` (
  
`id` int(11) NOT NULL AUTO_INCREMENT,
  
`npartita` int(2) NOT NULL,
  
`sq1` varchar(30) NOT NULL,
  
`sq2` varchar(30) NOT NULL,
  
`n_settimana` int(2) NOT NULL,
  PRIMARY KEY (`id`)
) 
ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;


INSERT INTO `partite` (`id`, `npartita`, `sq1`, `sq2`, `n_settimana`) VALUES
(1, 1, 'Burano', 'Giussaghese', 1),
(2, 1, 'Cesarolo', 'Noventa', 1),
(3, 1, 'Gainiga', 'EracleaCrepaldo', 1),
(4, 1, 'Grassaga', 'Sangiorgese', 1),
(5, 1, 'La Salute', 'Vigor', 1),
(6, 1, 'Lugugnana', 'San Stino', 1),
(7, 1, 'Treporti', 'Passarella', 1),
(8, 1, 'SummagaMaz', 'Ceggia', 1),
(9, 2, 'EracleaCrepaldo', 'La Salute', 2),
(10, 2, 'Giussaghese', 'Gainiga', 2),
(11, 2, 'Ceggia', 'Cesarolo', 2),
(12, 2, 'Noventa', 'Lugugnana', 2),
(13, 2, 'Passarella', 'Burano', 2),
(14, 2, 'San Stino', 'Treporti', 2),
(15, 2, 'Sangiorgese', 'SummagaMaz', 2),
(16, 2, 'Vigor', 'Grassaga', 2),
(17, 3, 'Burano', 'La Salute', 3),
(18, 3, 'Cesarolo', 'Passarella', 3);
--------------------------------------
CREATE TABLE IF NOT EXISTS `settimana_data` (
  
`id` int(11) NOT NULL AUTO_INCREMENT,
  
`settimana` int(11) NOT NULL,
  
`data` date DEFAULT NULL,
  PRIMARY KEY (`id`)
) 
ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

INSERT INTO `settimana_data` (`id`, `settimana`, `data`) VALUES
(1, 1, '2012-09-11'),
(2, 2, '2012-09-18'),
(3, 3, '2012-09-25');

Scusami ancora....... ma vorrei capire dove sto sbagliando e soprattutto come dovrebbe essere costruita in maniera corretta
 
Ultima modifica di un moderatore:
ciao
ci do un occhio poi ti so dire.
comunque una domanda:
il numero della settimana è riferito all'anno in corso (es la prima settimana del 2012 va dal 02.01.2012 al 08.01.2012) oppure ti riferisci al numero di settimane di torneo? il valore che ricavi (03) è il numero della settima dell'anno.
fammi sapere
 
No è un calendario ogni settimana corrisponde ad una gara x 16 squadre quindi le gare giocate sono 8 che in una tabella sarebbero 8 righe e 4 colonne.
Il calendario in corso è iniziato il 11/09/2011 (le date e il numero di settimana le carico sulla tabella `settimana_data


INSERT INTO `settimana_data` (`id`, `settimana`, `data`) VALUES
(1, 1, '2012-09-11'),
(2, 2, '2012-09-18'),
(3, 3, '2012-09-25');
esempio delle prime tre giornate con id, numero settimana e data
Questo per poter richiamare la settimana che dovrei visualizzare o per numero settimana o per data, li o messi tutti e due perché non so quale sia il metodo migliore.....
La mia idea è che richiamando da link il numero 1 e/0 data vorrei richiamare la prima giornata del torneo n 2 la seconda ecc..
Il torneo lo caricato nella tabella Partite INSERT INTO `partite` (`id`, `npartita`, `sq1`, `sq2`, `n_settimana`) questo perché le gare non sono ancora state giocate tutte, qui trovo solo il calendario 30 partite suddivise in gironi per numero settimana e data settimana la partita viene giocata di domenica.
I risultati non essendo ancora giocate tutte le partite dovrei caricarli di volta in volta quindi o pensato di separarli in una tabella Questa: INSERT INTO `risultati` (`id`, `squadra1`, `squadra2`, `gol1`, `gol2`) VALUES
(1, 1, 2, 2, 1),
(2, 3, 4, 0, 1);
(3, 5, 6, 1, 1),
(4, 7, 8, 0, 1);
(4, 9, 10, 3, 1),
(6, 11, 12, 4, 1);
(7, 13, 14, 2, 2),
(8, 15, 16, 0, 1);
esempio prima settimana
Non so se questo sia il metodo, migliore per farlo......... questa è la mia idea
 

Discussioni simili