requete complexe

Répondre
Kma
le 06/06/2005 à 05:25
Kma
bonjour a tous le monde
j'ai grand besoin de vos luminaire

voila problème

J'ai deux table (ou la jointure) et j'ai deux colone a ordoné, j'explique

je ve faire une recherche dans deux table identiques Emissions et Voices. de plus je ve faire une recherche ordonée par ca colonne debut sauf si la colonne redif est a 1 (defaut 0) dans ce cas c ordnonné par rdebut

premier pb j'arive pas a faire la multiple requette
$requete= "SELECT Emissions.jour,emission,debut,fin Voices.emission,jour,debut,fin FROM Emissions,Voices WHERE Emissions.jour  Voices.jour LIKE '$date' ORDER BY Voices.debut Emissions.debut";


mais j'arrive a faire le double ORDER ou presque, car il me classe les donné par debut qui est toujour remplis et rdebut n'efact en rien la requete
ce qui me donen cela

$requete= "SELECT * FROM Emissions WHERE jour LIKE '$date' OR rjour LIKE '$date' ORDER BY debut, rdebut";
$resultat = mysql_query($requete,$connexion);
while($data = mysql_fetch_array($resultat))
{
if ($data[redif] == "0")
{
$aff= true;
$debut= $data[debut];
$fin= $data[fin];
$debuth = substr($debut,0,2);
$debutm = substr($debut,3,2);
$finh = substr($fin,0,2);
$finm = substr($fin,3,2);

echo $debuth.'h'.$debutm.' - '.$finh.'h'.$finm.' : '.$data[emission].'<br>';
}
if ($data[redif] == "1")
{
$aff= true;
$debut= $data[rdebut];
$fin= $data[rfin];
$debuth = substr($debut,0,2);
$debutm = substr($debut,3,2);
$finh = substr($fin,0,2);
$finm = substr($fin,3,2);

echo $debuth.'h'.$debutm.' - '.$finh.'h'.$finm.' : '.$data[emission].'<br>';
}
}

pour plus d'info les colone sont emission jour debut fin (celle ci sont joujour remplis redif(defaut 0 /pas de rediff) rjour rdebut rfin (remplis ci redif =1)

donc si qqn arrive a me dire comment faire une requette dans deux table ( les champs sont le meme autrement on peut tous faire dans une able car j'ai ajouter pour tatoner un peu et trouver des solution un champ type 0=Emiisions et 1=Voices)

si je de compose ma requete mutiple j'enleve l'autre du type
SELECT Emissions.emission,jour,debut,fin FROM Emissions WHERE Emissions.jour LIKE '$date' ORDER BY Emissions.debut"
ca marche tres bien

pourkoi ?????????
bibi
le 06/06/2005 à 09:59
bibi
$requete= "SELECT Emissions.jour,emission,debut,fin Voices.emission,jour,debut,fin FROM Emissions,Voices WHERE Emissions.jour  Voices.jour LIKE '$date' ORDER BY Voices.debut Emissions.debut";


ya d trucs bizarre, genre 'fin Voices.emission'

ca correspond a quoi ?

ensuite ton WHERE
WHERE emissions.jour <== ?
where quoi ? si tu veux savoir s'il existe met IS NOT NULL

et met des or die(mysql_error()) pour savoir les erreurs retournées par mysql
commit suicide
Kma
le 06/06/2005 à 12:05
Kma
est-ce que tu parle du fin Voice... de la première et deuxieme ligne ??
si c le cas c les colones a selectionner de la permière table Emissions.... et la seconde table Voices....

ensuite le WHERE c les condition des deux table pour ORDER

ce ne sont que des tatonement

en fait je voudrai arrver a une formule SELECT qui serai litéralement :
SELECT les table Emissions et Voices WHERE la date est egal a $date ORDER BY si rediff=0 par debut OR si redif=1 par rdebut


mon champ date est une selection de type binaire
dim=1______ lun=_1______ ... ven=_____1_ sam=______1 et le code est celui la
$today = date ("w");
echo $today;
if ($today == "0") // Diamnche
{
$date= "1______";
}........


c simple a dire pas facil a faire

il est possible aussi de le faire dans une seule table ce qui serai certainement plus simple mais plus dure a administrer par la suite

la formule serait:
SELECT Emissions WHERE la date est egal a $date ORDER BY si rediff=0 par debut OR si redif=1 par rdebut
Kma
le 06/06/2005 à 12:18
Kma
non en fait c encore plus dur que ca

SELECT Emissions WHERE si redif=0 jour=$date ou si redif=1 rjour=$date ORDER BY si rediff=0 par debut OR si redif=1 par rdebut


il est techniquement possible que le champs soit donné deuxc foix dans la journé

une émission le matin et une redif le soir donc la while devra passer deux fois mais elle peut etre rediffuser une autre jour donc a ce moment la juste jour ou rjour intervient


doit je pous plus de simplicité faire une table normal et une table redif comme ca la requete multi table fera la recherche de chams avec les meme colone donc plus de rjour et plus de si redif=1 ???????????
Kma
le 06/06/2005 à 14:10
Kma
bon j'ai avancé un peut et voila ou j'en suis deux requette qui marche et qu'il faut que je mix pour en avoir qu'une
$requete= "SELECT * FROM Emissions WHERE jour LIKE '$date' ORDER BY debut";
$resultat = mysql_query($requete,$connexion);
while($data = mysql_fetch_array($resultat))
{
$aff= true;
$debut= $data[debut];
$fin= $data[fin];
$debuth = substr($debut,0,2);
$debutm = substr($debut,3,2);
$finh = substr($fin,0,2);
$finm = substr($fin,3,2);

echo $debuth.'h'.$debutm.' - '.$finh.'h'.$finm.' : '.$data[emission].'<br>';
}

$requete= "SELECT * FROM Redif WHERE jour LIKE '$date' ORDER BY debut";
$resultat = mysql_query($requete,$connexion);
while($data = mysql_fetch_array($resultat))
{
$aff= true;
$debut= $data[debut];
$fin= $data[fin];
$debuth = substr($debut,0,2);
$debutm = substr($debut,3,2);
$finh = substr($fin,0,2);
$finm = substr($fin,3,2);

echo $debuth.'h'.$debutm.' - '.$finh.'h'.$finm.' : '.$data[emission].'<br>';
}
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours