queries over 2 databases

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ozzie PHP

Ozzie PHP

21/05/2013 00:39:38
Quote Anchor link
Hallo,

Puur uit nieuwsgierigheid vraag ik me af of het mogelijk is om queries uit te voeren over meer dan 1 database. Dus zou je bijv. een JOIN query kunnen uitvoeren op 2 tabellen die zich in een verschillende database bevinden? Waarschijnlijk niet... maar ben toch benieuwd of iemand dit kan bevestigen (of ontkennen).
 
PHP hulp

PHP hulp

29/03/2024 05:41:45
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

21/05/2013 06:48:11
Quote Anchor link
Om je nieuwsgierigheid te bevredigen, ja dat kan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT t1.kolom1, t2.kolom1
FROM deenedatabase.tabel1 AS t1
JOIN deanderedatabase.tabel1 AS t2
USING (some_id)
 
Ozzie PHP

Ozzie PHP

21/05/2013 09:41:24
Quote Anchor link
Hoi Ger, oké dat wist ik niet! Wat ik niet snap... hoe maak je dan verbinding met 2 databases en hoe execute je je query dan?

Ik zie ook dat jij USING gebruikt. Wat is het verschil met WHERE...
 
TJVB tvb

TJVB tvb

21/05/2013 11:22:28
Quote Anchor link
Je moet met dezelfde user op beide databases toegang hebben vanuit dezelfde database sessie. Je maakt dus niet twee losse database connecties aan.
 
Ozzie PHP

Ozzie PHP

21/05/2013 11:23:59
Quote Anchor link
Dat begrijp ik niet. In je connectie moet je toch expliciet aangeven met welke database je connect?
 
TJVB tvb

TJVB tvb

21/05/2013 11:38:48
Quote Anchor link
Nee, dat kan (en is gebruikelijk)
Met mysql_select_db selecteer je welke database je standaard gebruikt (dat kan ook via de query USE 'databasenaam';
Dat zorgt er voor dat je in die database sessie niet altijd databasenaam.tabelnaam hoeft te gebruiken.

Als je geen standaard database selecteert moet je die bij je query's meegeven.

Als je gebruiker toegang heeft tot meerdere databases kun je de andere databases ook gebruiken.

Je krijgt dan
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
USE hoofddatabase; //Dit doe je vaak al met mysql_select_db o.i.d.
SELECT
    tabela.kolom1,
    anderedatabase.tabelb.kolom2
FROM
    tabela
    LEFT JOIN anderedatabase.tabelb ON
        tabela.id = anderedatabase.tabelb.id


Als je geen tabel selecteert is het:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT
    hoofddatabase.tabela.kolom1,
    anderedatabase.tabelb.kolom2
FROM
    hoofddatabase.tabela
    LEFT JOIN anderedatabase.tabelb ON
        hoofddatabase.tabela.id = anderedatabase.tabelb.id

De 2e query kun je ook gebruiken als je wel de database hebt geselecteerd
 
Ozzie PHP

Ozzie PHP

21/05/2013 11:47:17
Quote Anchor link
"Als je geen standaard database selecteert moet je die bij je query's meegeven."

Ik weet niet of ik je helemaal goed begrijp. Wat ik bedoelde is dat je bij PDO een database connectie moet maken. In deze connectie geef je aan welke database je wilt gebruiken via "dbname=foodatabase;". Dit kan ik (neem ik aan) toch niet zomaar leeg laten? Of kan dat wel???
 
TJVB tvb

TJVB tvb

21/05/2013 11:51:49
Quote Anchor link
Probeer het eens, in principe is dat niet nodig. Dat zou dan een beperking van PDO zijn.
Via een SQL client zoals HeidiSQL kun je verbinding maken met een MySQL server. Als je user toegang heeft tot meerdere databases zie je die gewoon in de lijst staan.
 
Ozzie PHP

Ozzie PHP

21/05/2013 11:54:21
Quote Anchor link
Oké, ik zal er binnenkort eens wat mee gaan testen. Ik had niet verwacht dat het zou kunnen, dus dat is sowieso al wel grappig. Thanks voor je hulp!
 
TJVB tvb

TJVB tvb

21/05/2013 11:56:06
Quote Anchor link
Installeer lokaal een MySQL server, verbind met een fatsoenlijke client. Maak meerdere databases aan met tabellen en probeer eens wat uit. Dat gaat sneller dan steeds een script moeten maken, uploaden en kijken wat er gebeurt.
 
Ozzie PHP

Ozzie PHP

21/05/2013 12:01:49
Quote Anchor link
Ik kan gewoon een database connectie maken op m'n server. Dus dat is geen probleem. Komt goed!
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

21/05/2013 19:23:06
Quote Anchor link
Ozzie PHP op 21/05/2013 09:41:24:
Hoi Ger, oké dat wist ik niet! Wat ik niet snap... hoe maak je dan verbinding met 2 databases en hoe execute je je query dan?

Ik zie ook dat jij USING gebruikt. Wat is het verschil met WHERE...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
USING (prd_id)

Is hetzelfde als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
ON t1.prd_id = t2.prd_id

Heel handig als je op meerdere kolommen moet joinen.
 
Ozzie PHP

Ozzie PHP

21/05/2013 20:08:20
Quote Anchor link
Ah oké thanks. Ik hoop dat ik het kan onthouden :)
 
Niek Kasius

Niek Kasius

12/08/2013 00:00:04
Quote Anchor link
je kunt wel uit 2 tabellen van een database iets selecteren. maar van 2 databasen lijkt me sterk, want hoe moet je dat in je verbinding "configuratie" regelen dan?
 
Erwin H

Erwin H

12/08/2013 00:08:49
Quote Anchor link
Lees de antwoorden Niek. Het kan namelijk wel degelijk, mits de mysql gebruiker rechten heeft op beide databases.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.