chi mi aiuta a risolvere questa join ??

searedone

Utente Attivo
11 Giu 2010
508
0
0
Ciao a tutti,
sto provando a fare questa join ma mi da' il seguente errore :


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'messages INNER JOIN users U ON (U.uid='54' ) WHERE M.uid_fk=U.uid OR' at line 3

La join è questa

PHP:
class Wall_Updates {


    
     // Updates   	
	  public function Updates($uid) 
	{
	
	
		 $query = mysql_query( "SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username FROM
        messages  INNER JOIN messages M  ON (M.uid_fk='$uid' )
        messages INNER JOIN users U ON (U.uid='$uid' )
        
WHERE   
M.uid_fk=U.uid OR M.uid_fk='$uid' OR M.uid_fk IN (SELECT user_1 FROM relationship AS r WHERE r.user_2 = '$uid' AND r.amico = 'S') OR M.uid_fk IN (SELECT user_2 FROM relationship AS r WHERE r.user_1 = '$uid' AND r.amico = 'S') order by M.msg_id desc  ") or die(mysql_error());     
		 while($row=mysql_fetch_array($query))
		$data[]=$row;
	    return $data;
	    
	    
	   
	    
	    
		
    }

Le tabelle sono

messages
relationship
users

per quale motivo deve essere sempre così incasinata una join :(
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Aggiorna su questo thread.
Avevo chiesto cosa deve fare la query.
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Ok ok ..

scusate errore mio ...

allora cerco di essere più chiaro possibile ....

ho tre tabelle messages, comments, users ma quelle che mi servono sono users e messages .

Lo script originale era questo:

PHP:
class Wall_Updates {


    
     // Updates   	
	  public function Updates($uid) 
	{
	    $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username FROM messages M, users U  WHERE M.uid_fk=U.uid and M.uid_fk='$uid' order by M.msg_id desc ") or die(mysql_error());
         while($row=mysql_fetch_array($query))
		$data[]=$row;
	    return $data;
		
    }

Come puoi vedere c'è U.username e users U.

Modificandolo come serve a me così :

PHP:
class Wall_Updates {


    
     // Updates   	
	  public function Updates($uid) 
	{
	
	
		 $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created FROM messages M WHERE   M.uid_fk='$uid' OR M.uid_fk IN (SELECT user_1 FROM relationship AS r WHERE r.user_2 = '$uid' AND r.amico = 'S') OR M.uid_fk IN (SELECT user_2 FROM relationship AS r WHERE r.user_1 = '$uid' AND r.amico = 'S') order by M.msg_id desc  ") or die(mysql_error());     
		 while($row=mysql_fetch_array($query))
		$data[]=$row;
	    return $data;
		
    }

NOn posso aggiungere la tabella users perché se no al posto di vedere solo i post degli amici come funziona correttamente in questa query, mi fa' vedere il post ripetuto per tutti gli utenti registrati.

La mia necessità è quella di aggiungere a quest'ultima query la tabella users per recuperare dei dati che mi servono da stampare e ho pensato di fare una join, ma magari potrebbe bastare una qualsiasi query ecc.

E ho provato così nel pomeriggio:

PHP:
 // Updates        
      public function Updates($uid)  
    { 
     
     
         $query = mysql_query( "SELECT M.msg_id, M.uid_fk, M.message, M.created, username FROM 
       messages 
        INNER JOIN messages M  ON (M.uid_fk='$uid' )
        INNER JOIN users U ON (M.uid_fk=U.uid ) 
      
         
WHERE    
M.uid_fk=U.uid AND  M.uid_fk='$uid' OR M.uid_fk IN (SELECT user_1 FROM relationship AS r WHERE r.user_2 = '$uid' AND r.amico = 'S') OR M.uid_fk IN (SELECT user_2 FROM relationship AS r WHERE r.user_1 = '$uid' AND r.amico = 'S')   order by M.msg_id desc") or die(mysql_error());      
         
         while($row=mysql_fetch_array($query)) 
        $data[]=$row; 
        return $data; 
         
  }

Pero' nn funziona bene perché mi rida' tutti i post :(

ti posto i campi delle tabelle

PHP:
CREATE TABLE IF NOT EXISTS `users` (
  `uid` bigint(20) NOT NULL AUTO_INCREMENT,
  `md5_id` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `full_name` tinytext COLLATE latin1_general_ci NOT NULL,
  `username` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `user_email` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `email` varchar(100) COLLATE latin1_general_ci NOT NULL,
  `user_level` tinyint(4) NOT NULL DEFAULT '1',
  `pwd` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `address` text COLLATE latin1_general_ci NOT NULL,
  `country` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `tel` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `fax` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `website` text COLLATE latin1_general_ci NOT NULL,
  `date` date NOT NULL DEFAULT '0000-00-00',
  `users_ip` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `approved` int(1) NOT NULL DEFAULT '0',
  `activation_code` int(10) NOT NULL DEFAULT '0',
  `banned` int(1) NOT NULL DEFAULT '0',
  `ckey` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `ctime` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `nome_file_vero` varchar(255) COLLATE latin1_general_ci NOT NULL,
  `tipo_file` varchar(255) COLLATE latin1_general_ci NOT NULL,
  `dati_file` longblob NOT NULL,
  PRIMARY KEY (`uid`),
  UNIQUE KEY `user_email` (`user_email`),
  FULLTEXT KEY `idx_search` (`full_name`,`address`,`user_email`,`username`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=66 ;

i campi della tabella messages
PHP:
CREATE TABLE IF NOT EXISTS `messages` (
  `msg_id` int(11) NOT NULL AUTO_INCREMENT,
  `message` varchar(200) DEFAULT NULL,
  `uid_fk` int(11) DEFAULT NULL,
  `ip` varchar(30) DEFAULT NULL,
  `created` int(11) DEFAULT '1269249260',
  PRIMARY KEY (`msg_id`),
  KEY `uid_fk` (`uid_fk`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=274 ;

Tabella relationship


CREATE TABLE IF NOT EXISTS `relationship` (
`id` int(10) NOT NULL auto_increment,
`user_1` varchar(10) NOT NULL,
`user_2` varchar(10) NOT NULL,
`amico` enum('S','N') NOT NULL default 'N',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=76 ;
 
Ultima modifica:

searedone

Utente Attivo
11 Giu 2010
508
0
0
Sera a tutti...

ho provato anche così ma non mi tiene l'users dopo che rinfresco la pagina .....

PHP:
 $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created FROM messages M WHERE M.uid_fk='$uid' OR  (SELECT u.username FROM users AS u WHERE M.uid_fk = u.uid AND u.username = '$username' )  OR M.uid_fk IN (SELECT user_1 FROM relationship AS r WHERE r.user_2 = '$uid' AND r.amico = 'S')  OR M.uid_fk IN  (SELECT user_2 FROM relationship AS r WHERE r.user_1 = '$uid' AND r.amico = 'S') order by M.msg_id desc  ") or die(mysql_error());
 
Discussioni simili
Autore Titolo Forum Risposte Data
S chi mi aiuta a risolvere questa join ?? PHP 4
M Cerco a pagamento chi mi aiuta Offerte e Richieste di Lavoro e/o Collaborazione 2
P chi mi aiuta per costruire una finestra overlay ???? Javascript 1
A anagrafica clienti con campi personalizzati - chi mi aiuta? MS Access 0
D raga chi mi aiuta - problema ecommerce WordPress 3
R Chi mi aiuta tramite Skype a installare su Xampp vecchia versione di Php? PHP 1
P Mi hanno rubato 2 pagina facebook chi mi aiuta a riprenderle??!! Annunci servizi di Social Media Marketing 0
giancadeejay Chi mi aiuta a caricare una intro sul mio sito? Flash 0
P Chi mi aiuta a capire dove sbaglio nel mio CSS? HTML e CSS 3
V Chi mi aiuta con un firewall cattivo!!!! Web Server 4
C Ragazzi chi mi aiuta a realizzare questa applicazione ?? Flash 1
E chi mi aiuta a fare qusto programma in C ??? Programmazione 0
SolidSnake4 chi mi aiuta con un preventivo ? Discussioni Varie 1
M pagherò chi mi aiuta!! HTML e CSS 4
T chi mi aiuta a scrivere il ciclo? PHP 6
C Chi mi aiuta..............................? PHP 1
F chi mi aiuta....... Reti LAN e Wireless 1
T offro metà del mio guadagno adsense fino al 2009 a chi mi aiuta Google AdSense 1
P chi mi aiuta a modificare questa scritta?? Flash 2
S Chi mi aiuta con la costruzione di un sito? Altri Annunci 0
A Chi mi aiuta con il PHPBB ? phpBB 1
T Ordinare dati di un Recordset [era:Grosso problema, chi mi aiuta?] Classic ASP 2
L Chi mi aiuta ad inserire il contatore? HTML e CSS 7
N Chi mi aiuta con le sessioni??? PHP 1
U chi mi aiuta? filamto flash Flash 1
K File audio in html, chi mi può aiutare? HTML e CSS 0
M Un aiuto da chi ha apple Mac e Software 0
fornoli78 OFFRO/CERCO chi esegue piccoli lavori... Offerte e Richieste di Lavoro e/o Collaborazione 1
V [WordPress] Come si chiama chi crea siti web senza linguaggi di programmazione? Discussioni Varie 2
I [HTML] HTML validator, chi mi spiega questi errori? HTML e CSS 1
R Cerco chi mi può pubblicare la mia app Offerte e Richieste di Lavoro e/o Collaborazione 2
Bosss Chi è Bosss? Presentati al Forum 2
G Chi sono, dove vado. Presentati al Forum 1
Gaetano1991h [PHP] Chi mi sa spiegare la funzione di questo codice? PHP 1
P problemi con nas o per chi conosce synology Altri Annunci 0
MarcoGrazia Chi si intende di? Discussioni Varie 0
D Chi deve fornire i testi? Leggi, Normative e Fisco 1
felino Cookie: capire da chi sono segnalati e se occorre generarli HTML e CSS 2
otto9due Piccolo conflitto jquery.. Chi gli da uno sguardo? jQuery 6
piccino Disabilitare “aggiungi nuovo” articolo a chi ne ha uno pubblicato o messo in revisione. WordPress 0
Mauro Guardiani chi sa dove mettere questo codice Tubular jQuery plugin Javascript 1
F [VENDO]Pagina 76K perfetta per chi vuole iniziare a lavorare con FACEBOOK! Annunci servizi di Social Media Marketing 3
filippino Chi mi spiega cosa sono CSS Sprite? HTML e CSS 1
T [risolto] Conversione comandi da javascript a jquery. Chi può aiutarmi? Javascript 4
V Libri da consigliare per chi è alle prime armi con il web design Discussioni Varie 1
J [RISOLTO]Chi ti ha chiamato? PHP 5
S pareri da chi lavora gia' come webmaster Discussioni Varie 3
borgo italia per chi vuole sparire dal web Discussioni Varie 1
P Aggiornamento database [era: Banale...per chi non è inesperta come me... :(] PHP 4
L Foto di minori e privacy: chi ne è responsabile? il webdesigner o il titolare del sito? Leggi, Normative e Fisco 5

Discussioni simili