IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Db PHP Discussion :

Erreur avec un select()


Sujet :

Zend_Db PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut Erreur avec un select()
    Bonjour à tous.

    Voilà j'ai une erreur avec un select que j'effectue et qui m'ennuie assez bien car il crash tout simplement et ne me permet pas de voir le query SQL.

    Voici ma classe:
    La fonction incriminée est bien entendu getCenterActive().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <?php
    class Center extends Zend_Db_Table_Abstract {
     
    	protected $_name = 'center';
    	protected $_primary = 'id';
     
    	private $_mappingColumns = array (
    						'idCenter'=>'id',
    						'centerCode'=>'sCode',
    						'centerName'=>'sName',
    						'centerPhone'=>'sPhone',
    						'centerFax'=>'sFax',
    						'idCurrency'=>'fkCurrency',
    						'idVat'=>'fkVat',
    						'idStatus'=>'fkStatus',
    						'centerVatNumber'=>'sVatNumber',
    						'centerAddress'=>'sAddress',
    						'centerPostCode'=>'sPostCode',
    						'centerCity'=>'sCity',
    						'centerCountry'=>'sCountry'
    						);
    	private function prepare(array $logicalKeys) {
    		$result = array();
    		foreach ($logicalKeys as $key=>$value) {
    			if (key_exists($key,$this->_mappingColumns))
    				$result[$this->_mappingColumns[$key]] = $value;
    		}
    		return $result;
    	}
    	private function prepareWhere($where) {
    		$clause = '';
    		foreach ($where as $key=>$value) {
    			$clause .= $this->_mappingColumns[$key].' = '.$value;
    			break;
    		}
    		return $clause;
    	}
     
    	public function getCenterActive() {
    		$select = $this->select();
    		$select->from($this->_name,'id');
    		$select->from('currency','sSymbol');
    		$select->from($this->_name,$this->_mappingColumns['centerName']);
    		$select->from('status','sName');
    		//$select->join('status', $this->_name.'.'.$this->_mappingColumns['idStatus'].'= status.id');
    		$select->where($this->_name.'.'.$this->_mappingColumns['idStatus'].'= status.id');
    		$select->where($this->_name.'.'.$this->_mappingColumns['idCurrency'].'= currency.id');
    		//$select->join('currency',$this->_name.'.'.$this->_mappingColumns['idCurrency'].'= currency.id');
    		$select->where('status.sName like ?','%Active');
    		$select->order($this->_name.'.'.$this->_mappingColumns['centerName']);
    		$logger = Zend_Registry::get('logger');
    		$logger->info('SQL request of getCenterActive: ['.$select->__toString().']');
    		return parent::fetchAll($select);
    	}
    }
    ?>
    L'erreur renvoyée est "Select query cannot join with another table"

    Merci d'avance et bonne journée!

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour,

    Je ne connais pas cette façon de faire et je ne m'y intéresse pas vraiment.

    Mais pour debuguer, ne pourrais tu pas faire un select ....classique et vérifier si cela fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    $sql 'ton select';
    parent::fetchAll($sql);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut
    Le select classique fonctionne.

    En gros mon Query SQL doit être celui-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT center.id, currency.sSymbol, center.sName, status.sName
    FROM center, currency, status
    WHERE center.fkStatus = status.id
    AND center.fkCurrency  = currency.id
    AND status.sName like '%Active'
    ORDER BY center.sName

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    et si tu fais un echo de $select, tu devrais avoir le string?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    et si tu fais un echo de $select, tu devrais avoir le string?
    Oui mais pas de ce cas et c'est bien là le problème... la string renvoyée est vide.
    Le select crash quoi...

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Voila ce que génère ton $select


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT "center"."id", "currency"."sSymbol", "center_2"."sName", "status"."sName" 
    	FROM "center" 
    		INNER JOIN "currency" 
    		INNER JOIN "center" AS "center_2" 
    		INNER JOIN "status" 
    WHERE (center.fkStatus= status.id) AND (center.fkCurrency= currency.id) 
    AND (status.sName like '%Active') 
    ORDER BY "center"."sName" ASC



    Je ne sais si tu peux faire des INNER JOIN et mettre la clause de jointure dans un WHERE et non pas un 'ON'?

    Par contre tu insères une deuxième fois la table 'center', la center_2 donc, mais tu ne spécifie pas de clause de jointure, ce qui par rapport à ton message d'erreur me semble être là le problème.


    D'après ton code et ce que je comprend il manque ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $select->where($this->_name.'.'.$this->_mappingColumns['idCenter'].'= center_2.idCenter');

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Erreur avec selection
    Par markos63 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2013, 08h35
  2. Réponses: 5
    Dernier message: 21/03/2013, 18h24
  3. [MySQL] Erreur avec SELECT COUNT
    Par stefano dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/08/2012, 13h35
  4. Erreur SQl pour select count avec critere date
    Par fdalyon dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/05/2010, 19h50
  5. [AC-2003] Erreur avec UPDATE via les données d'une requete SELECT
    Par cpdump dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/06/2009, 12h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo