Query non valida... aiuto!

Salve ragazzi avrei bisogno di un aiuto, ho nel database 3 tabelle:

TABELLA 1

nome tabella: "consigli_User"

con le caselle: "UserID" e "Name"

TABELLA 2

nome tabella: "consigli_Discussion "

con le caselle: "AuthUserID" e "CommentID"

TABELLA 3

nome tabella: "consigli_Discussion "

con le caselle: "UserID" e "CommentID"

eseguo lo script:

$sql = "SELECT UserID,Name,AuthUserID,CommentID,count(*) AS numero_commenti

FROM consigli_User AS u JOIN consigli_Comment AS c JOIN consigli_ThankfulPeople AS v

ON u.UserID=c.AuthUserID

AND c.AuthUserID=v.UserID

AND c.CommentID=v.CommentID

GROUP BY numero_commenti

ORDER BY numero_commenti DESC";

$res=mysql_query($sql) or die ("Query non valida: $sql");

while ($row = mysql_fetch_row($res)) {

  echo 'ID: ', $row[0] , ' Nome: ', $row[1] , "\n";

}

per elencare gli utenti con il numero di ringraziamenti ricevuti ai loro comenti e ricevo l'errore:

Query non valida: SELECT UserID,Name,AuthUserID,CommentID,count(*) AS numero_commenti FROM consigli_User AS u JOIN consigli_Comment AS c JOIN consigli_ThankfulPeople AS v ON u.UserID=c.AuthUserID AND c.AuthUserID=v.UserID AND c.CommentID=v.CommentID GROUP BY numero_commenti ORDER BY numero_commenti DESC

Stò impazzendo... mi date una mano ??????

grazie

inviato 9 anni fa
ivanella
X 0 X

Scusate nel post c'è un errore alla

TABELLA 3

nome tabella: "consigli_ThankfulPeople"

....grazie....

risposto 9 anni fa
ivanella
X 0 X

Ma il primo JOIN non ha una clausola ON ? Ogni JOIN dovrebbe avere la SUA logica di collegamento tra tabelle

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

ciao Gianni grazie del  suggerimento ma non saprei come procedere....

ho modificato il codice in:

$sql = "SELECT UserID,Name,AuthUserID,CommentID,count(*) AS numero_commenti 
FROM consigli_User AS u JOIN consigli_Comment AS c JOIN consigli_ThankfulPeople AS v 
ON u.UserID=c.AuthUserID 
AND c.AuthUserID=v.UserID 
AND c.CommentID=v.CommentID 
GROUP BY numero_commenti 
ORDER BY numero_commenti DESC"; 

$res=mysql_query($sql) or die ("Query non valida: $sql <br>Errore: ".mysql_error()); 

while ($row = mysql_fetch_row($res)) { 
  echo 'ID: ', $row[0] , ' Nome: ', $row[1] , "\n"; 
}

e mi da questo errore:

Query non valida: SELECT UserID,Name,AuthUserID,CommentID,count(*) AS numero_commenti FROM consigli_User AS u JOIN consigli_Comment AS c JOIN consigli_ThankfulPeople AS v ON u.UserID=c.AuthUserID AND c.AuthUserID=v.UserID AND c.CommentID=v.CommentID GROUP BY numero_commenti ORDER BY numero_commenti DESC

Errore: Column 'UserID' in field list is ambiguous

qualche suggerimento?????

risposto 9 anni fa
ivanella
X 0 X

La colonna UserID è presente in più tabelle coinvolte nella query pertanto non puoi utilizzarla senza specificare a quale tabella fai riferimento.

"SELECT UserID" è ambiguo. Quale UserID? Quello di consigli_User o quello di consigli_ThankfulPeople? Dovresti scrivere u.UserID oppure v.UserID

 :bye:

P.S.: le JOIN vanno scritte così:

... FROM tabella1 t1 JOIN tabella2 t2 ON t1.campo1 = t2.campo2

JOIN  tabella3 t3 ON t2.campo2 = t3.campo3

JOIN  tabella4 t4 ON t3.campo3 = t4.campo4

ogni JOIN deve avere un ON

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

così sembra andare bene ... nessun errore....

$sql = "SELECT u.UserID,Name,AuthUserID,c.CommentID,count(*) AS numero_commenti 

FROM consigli_User AS u JOIN consigli_Comment AS c JOIN consigli_ThankfulPeople AS v 

ON u.UserID=c.AuthUserID 

AND c.AuthUserID=v.UserID 

AND c.CommentID=v.CommentID 

GROUP BY Name

ORDER BY numero_commenti DESC"; 

$res=mysql_query($sql) or die ("Query non valida: $sql <br>Errore: ".mysql_error());

ma ora non riesco a mostrare la lista dei soci nella forma:

UserID, Name, numero_commenti

Non mi sembra vero...ci siamo quasi .... grazie di tutto...se puoi darmi ancora un aiuto....

risposto 9 anni fa
ivanella
X 0 X

qual'è il problema?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Questo è il risultato finale....

$sql = "SELECT u.UserID,Name,AuthUserID,c.CommentID,count(*) AS numero_commenti 

FROM consigli_User AS u JOIN consigli_Comment AS c JOIN consigli_ThankfulPeople AS v 

ON u.UserID=c.AuthUserID 

AND c.AuthUserID=v.UserID 

AND c.CommentID=v.CommentID 

GROUP BY Name

ORDER BY numero_commenti DESC"; 

$res=mysql_query($sql) or die ("Query non valida: $sql <br>Errore: ".mysql_error()); 

$array = mysql_fetch_array($res);

print "A: ".$array['uUserID']."<br>";

print "B: ".$array['u.Name']."<br>";

print "C: ".$array['numero_commenti']."<br>";

ma pur non dandomi errori...

Non mostra nessuna lista di utenti...

solo tre misere lettere:

A:

B:

C:

Sig.... sig .... sob ... sob...

risposto 9 anni fa
ivanella
X 0 X

per sapere cosa contiene $array, in modo da richiamare correttamente i dati presenti in esso, usa

print_r($array);

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda