Code : Tout sélectionner
SELECT * FROM `table1`
JOIN `table2`
ON table1.pseudo != table2.pseudo
AND table1.mpass != table2.mpass
WHERE table1.pseudo = 'BeRoots1' AND table1.mpass = 'motdepass'
OR table2.pseudo = 'BeRoots1' AND table2.mpass = 'motdepass'
Ben euh, la même qu'au départ : explique ce que tu veux faire plutôt que d'expliquer comment tu veux le faire.quelqu'un aurrai t'il une idée à soumettre?
Code : Tout sélectionner
requête SQL:
SELECT pseudo, mpass, activ FROM `table1` WHERE pseudo = 'pseudo'
UNION
SELECT pseudo, mpass FROM `table2` WHERE pseudo = 'pseudo'
MySQL a répondu:Documentation
#1222 - The used SELECT statements have a different number of columns
...on avait dit en détail ?en gros
Si tu dis "je récupère la ligne d'un pseudo dans 2 tables" ça veut dire que le pseudo existe dans les deux tables et qu'une jointure est faite entre les deux, mais ça semble être contredit par le reste de ton message. Ce que tu veux ce sont les infos d'un pseudo dans chacune des tables ? (donc pas en même temps, sans jointure)on recupere la ligne correspondante à un pseudo dans les 2 tables
Quand tu dis qu'il ne peut pas, tu veux dire qu'il ne doit pas ? À cet instant est-ce qu'il y a des pseudos qui ne respectent pas cette règle et c'est ce que tu veux éliminer ? Désolé mais je ne comprends rien à tes messagesil est impossible qu'il y ai des doublon pour ce pseudo car un pseudo est unique et ne peut etre dans les deux tables en meme temps
Ce serait dommage de perdre du temps sur une requête qui ne convient même pas à ce que tu veux faire. La logique de ce "champs d'activation" peut totalement changer la requête, ce serait mieux de décrire vraiment ce que tu veux faire et pourquoi tu veux le faire, sinon on va passer encore trois mois à discuter de toutes les requêtes que tu auras essayé au hasard pour s'apercevoir que la solution était cent fois plus simple.la table 1 tient copte d'un champs d'activation du compte alors que la table 2 n'en tient pas compte...
$connexion = mysql_connect($hostdb, $userdb, $passdb) or die('Erreur SQL !<br />'.$connexion.'<br />'.mysql_error());
//sélection de la BDD
$db = mysql_select_db($usedb,$connexion) or die('Erreur SQL !<br />'.$db.'<br />'.mysql_error());
// selection de la ligne avec le couple pseudo/pass pour la table membre
$sql = "SELECT `pseudo`,`activ` FROM `$table1` WHERE (`pseudo` = '$pseudo' and `mpass` = '$crypt')";
$result = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// si la recherche dans la table 1 renvoi qqchose
if($result != '')
{
// on defini les deux variable retourner par SQL
while ($tabl_sql = mysql_fetch_assoc($result))
{
$pseudo_db = $tabl_sql['pseudo'];
$activation = $tabl_sql['activ'];
}
}
// sinon on recherche dans la table 2
else
{
// selection de la ligne avec le couple pseudo/pass pour la table 2
$sql = "SELECT `pseudo` FROM `$table2` WHERE (`pseudo` = '$pseudo' and `mpass` = '$crypt')";
$result = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on defini la variable retourner par SQL et on definit l'autre à true
while ($tabl_sql = mysql_fetch_assoc($result))
{
$pseudo_db = $tabl_sql['pseudo'];
$activation = true;
}
}
// déconnection avec MySQL
mysql_close();
en gros je scan ma table1 et si on trouve rien, on cherche dans table2... $connexion = mysql_connect($hostdb, $userdb, $passdb) or die('Erreur SQL !<br />'.$connexion.'<br />'.mysql_error());
//sélection de la BDD
$db = mysql_select_db($usedb,$connexion) or die('Erreur SQL !<br />'.$db.'<br />'.mysql_error());
// selection de la ligne avec le couple pseudo/pass pour la table1
$sql = "SELECT `pseudo`,`activ` FROM `table1` WHERE (`pseudo` = '$pseudo' and `mpass` = '$crypt')";
$result = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$tabl_sql = mysql_fetch_assoc($result);
// si la recherche dans la table1 membre renvoi qqchose
if($tabl_sql != '')
{
// on defini les deux variable retourner par SQL
$pseudo_db = $tabl_sql['pseudo'];
$activation = $tabl_sql['activ'];
}
// sinon on recherche dans la table2
else
{
// selection de la ligne avec le couple pseudo/pass pour la table2
$sql = "SELECT `pseudo` FROM `table2` WHERE (`pseudo` = '$pseudo' and `mpass` = '$crypt')";
$result = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$tabl_sql = mysql_fetch_assoc($result);
// on defini la variable retourner par SQL et on definit l'autre à true
$pseudo_db = $tabl_sql['pseudo'];
$activation = true;
}
// déconnection avec MySQL
mysql_close();
si quelqu'un voit plus simple, merci du conseil