web-dev-qa-db-fra.com

Comment exécuter ma requête SQL dans CodeIgniter

J'ai un problème avec ma requête et je dois joindre deux tables de bases de données différentes. Mon problème est maintenant de savoir comment exécuter ma requête. J'ai mon format de syntaxe d'ici 

S'il vous plaît visitez d'abord ce lien afin que vous puissiez comprendre pourquoi ma syntaxe SQL est comme ceci
http://www.x-developer.com/php-scripts/sql-connecting-multiple-databases-in-a-single-query


J'utilise CodeIgniter et voici une idée de ce à quoi ma requête ressemble:
Remarquez la façon dont je sélectionne mes colonnes: DATABASE_NAME.TABLE_NAME.COLUMN_NAME

$ENROLLEES = $this->load->database('ENROLLEES', TRUE);
$ACCOUNTS  = $this->load->database('ACCOUNTS', TRUE);

$SELECT    = "SELECT $ACCOUNTS.BALANCES_TABLE.IDNO, $ACCOUNTS.BALANCES_TABLE.balance";
$FROM      = "FROM $ACCOUNTS.BALANCES_TABLE";
$WHERE     = "$ACCOUNTS.BALANCES_TABLE.IDNO IN (SELECT $ENROLLEES.ENROLLEES_TABLE.IDNO FROM $ENROLLEES.ENROLLEES_TABLE)";

$SQL       = $SELECT ." ". $FROM ." ". $WHERE;

PRINCIPAL PROBLEME: Comment exécuter ma requête?
Si nous faisons comme ça dans codeIgniter:

$ENROLLEES->query($SQL); or $ACCOUNTS->query($SQL);

Comment puis-je exécuter ma requête selon laquelle j'ai plusieurs bases de données? Que vais-je fournir ici
[database]->query($SQL);?

18
Þaw
$query = $this->db->query($SQL);

return $query->result_array();
35
Mohit maru

Si les bases de données partagent le serveur, utilisez un identifiant avec des privilèges sur les deux bases de données et exécutez simplement une requête similaire à

$query = $this->db->query("
SELECT t1.*, t2.id
FROM `database1`.`table1` AS t1, `database2`.`table2` AS t2
");

Sinon, je pense que vous devrez peut-être exécuter les 2 requêtes séparément et corriger la logique par la suite.

12
Robin Castlin

Je peux voir ce que @ Þaw a mentionné:

$ENROLLEES = $this->load->database('ENROLLEES', TRUE);
$ACCOUNTS = $this->load->database('ACCOUNTS', TRUE);

CodeIgniter prend en charge plusieurs bases de données. Vous devez conserver les deux références de base de données dans une variable distincte, comme vous l'avez fait ci-dessus. Jusqu'à présent, vous avez raison/correct.

Ensuite, vous devez les utiliser comme ci-dessous:

$ENROLLEES->query();
$ENROLLEES->result();

et 

$ACCOUNTS->query();
$ACCOUNTS->result();

À la place d'utiliser 

$this->db->query();
$this->db->result();

Voir ceci pour référence: http://ellislab.com/codeigniter/user-guide/database/connecting.html

2
Muhammad Hannan

http://www.bsourcecode.com/codeigniter/codeigniter-select-query/

$query = $this->db->query("select * from tbl_user");

OR

$query = $this->db->select("*");
            $this->db->from('table_name');
            $query=$this->db->get();
1
Gurpreet Singh
 return $this->db->select('(CASE 
            enter code hereWHEN orderdetails.ProductID = 0   THEN dealmaster.deal_name
            WHEN orderdetails.DealID = 0 THEN products.name
            END) as product_name')
0
Muhammad Sulman

$ this-> db-> select ('id, nom, prix, auteur, catégorie, langue, ISBN, date de publication');

       $this->db->from('tbl_books');
0
user9232865