Requete sur 2 BD Interbase differentes

Tato
Invité n'ayant pas de compte PHPfrance

04 avr. 2005, 13:55

Bonjour, je voudrais savoir s'on peut faire et comment une requete qu'attaque 2 tables de 2 BD interbase differentes.

Merci
Tato

Mammouth du PHP | 859 Messages

04 avr. 2005, 14:11


Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

04 avr. 2005, 14:35

flitox, je crois que tu n'as pas lu que Tato cherche à joindre des tables sur deux "BD" différentes.

Je n'y connais rien en InterBase, mais tu ferais mieux de fournir quelques précisions supplémentaires comme la version de ton serveur et si les deux bases de données sont situées sur le même serveur ou sur deux serveurs différents.

Mammouth du PHP | 859 Messages

04 avr. 2005, 14:40

J'ai lu un peu trop vite :oops:

Eléphant du PHP | 297 Messages

26 juin 2007, 15:14

Bonjour,
Je suis interessé de savoir si qlq à une réponse à ce sujet !
donc requete sur deux tables qui se trouvent sur deux bases diffferentes et sur un meme serveur.
merci

Mammouth du PHP | 693 Messages

26 juin 2007, 15:28

C'est tout bête :D

Code : Tout sélectionner

SELECT * FROM nomDB1.nomTable1 LEFT OUTER JOIN nomDB2.nomTable2 ON nomDB1.nomTable1.Champ1=nomDB2.nomTable2.Champ2
J'ai extrapolé à partir de la syntaxe des permissions et ca marche.

Eléphant du PHP | 297 Messages

26 juin 2007, 15:48

ah ok !!
mais que devient la connection à la base ??
mysql_select_db($database_mabase, $mabase);

Mammouth du PHP | 693 Messages

26 juin 2007, 15:57

La requete fait le même résultat quelque soit la base de donnée selectionnée, voire même si aucune base n'est sélectionnée. Par contre, quand je fait la requete sur PHPMyAdmin, je suis renvoyé automatiquement sur la première base de donnée. Donc si tu fais ensuite d'autre requete, il vaut mieux reselectionner la BDD.

Eléphant du PHP | 297 Messages

26 juin 2007, 16:12

ok, merci,
derniere question ! :wink:
comment cela ce code si j'ai une requete multicritere du genre
FROM produits WHERE produits.rubannu1 LIKE '%%%s%%'  OR produits.rubannu2  LIKE '%%%s%%' OR produits.rubdetail2  LIKE '%%%s%%'

Mammouth du PHP | 693 Messages

26 juin 2007, 16:15

Je te consseillerai de surnommer tes tables du style
Select FROM maBDD.matable C
pûis après, c'est comme une requete normal sauf que tu mais C comme nom de table

Eléphant du PHP | 297 Messages

26 juin 2007, 16:20

...surnommer...tu veux dire renommer mes bases et tables ?

Mammouth du PHP | 693 Messages

26 juin 2007, 16:25

Non, juste que lors de la requete, elles auront un autre nom. C'est plus simple de travailler avec des surnoms quand les noms des tables sont un peu llong et qu'il y a beaucoup de condition.

Pour surnommer une table, tu mets le surnom après le nm de la table, après l'espace et tu utilise le surnom pour le reste de la requete. J'ai été clair ?

Eléphant du PHP | 297 Messages

26 juin 2007, 16:35

oui, surement tu as été clair, mais j'ai pas trop compris !
C'est la que j'ai pas piger : 'tu mets le surnom après le nm de la table, après l'espace'


peux-tu me confirmer si pour une multi-requete (plusieurs mots cles sur plusieurs colonnes) je peux toujours utiliser LIKE et OR ?[/code]

Mammouth du PHP | 693 Messages

26 juin 2007, 17:33

OUi, du moment que tu indique bien les ccolonnes, c'est dire, nomDB.nomTable.nomColomne

Eléphant du PHP | 297 Messages

26 juin 2007, 20:53

je viens de mettre tout ça en place, mais j'ai une page en blanche en affichage, sans message d'erreur.
Voici la requete (désolé sans avoir surnommé les bases)
$query_enr_produits = sprintf("SELECT * 
 FROM horizogaland.shop2_produits
 LEFT OUTER JOIN horizogallat.shop_produits
 ON horizogaland.shop2_produits.rubannu1=horizogallat.shop_produits.rubannu1
 LEFT OUTER JOIN horizogallat.shop_produits
 ON horizogaland.shop2_produits.rubannu2=horizogallat.shop_produits.rubannu2
 LEFT OUTER JOIN horizogallat.shop_produits
 ON horizogaland.shop2_produits.rubdetail2=horizogallat.shop_produits.rubdetail2
 WHERE shop2_produits.rubannu1
 LIKE '%%%s%%' OR shop2_produits.rubannu2
 LIKE '%%%s%%' OR shop2_produits.rubdetail2
 LIKE '%%%s%%' ", $motcle_enr_produits, $motcle_enr_produits, $motcle_enr_produits);
et le code qui fonctionne bien actuellement mais sur une base
$query_enr_produits = sprintf("SELECT *
 FROM shop2_produits
 WHERE shop2_produits.rubannu1
 LIKE '%%%s%%'  OR shop2_produits.rubannu2
  LIKE '%%%s%%' OR shop2_produits.rubdetail2
  LIKE '%%%s%%' ORDER BY shop2_produits.titre", $motcle_enr_produits, $motcle_enr_produits, $motcle_enr_produits);
[/code]
je me suis surement planté !! est-ce que tu vois ou ??