[PHP / SQL] data van 2 databases combineren en weergeven

Pagina: 1
Acties:
  • 140 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • nl2dav
  • Registratie: Juni 2001
  • Laatst online: 08-09 18:55
Oke, ik ben nu al een paar dagen bezig voor een oplossing maar ik kom er niet uit.

Situatie is als volgt;

SQL database: tijdstempel + data
MySQL database: tijdstempel + data

Nu is het de bedoeling dat de data van een bepaalde dag uit beiden databases geplukt wordt en weergegeven. Dat is nog niet eens zo heel erg want dat lukt me wel, maar het moet ook nog eens gesorteerd worden op een bepaalde kolom (tijd).

En daar kom ik niet uit. Ik zou het opnieuw kunnen bufferen in een andere mysql table ofzo maar dat leek me niet praktisch. Vervolgens met array's aan de gang gegaan en daar kwam ik helemaal in een bos terecht.

Wat is het beste, verder gaan met een tijdelijke table in mySQL als buffer of toch gewoon array's gebruiken. Dat laatste lijkt me praktischer, is dat ook de juiste manier?

Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 08:07
Waarom niet gewoon allebei laten sorteren op tijd en dan:
pseudo code:
code:
1
2
3
4
5
6
7
8
9
while(erzijnMeerRijen(sqltijd) of erzijnMeerRijen(mysqltijd)) do
  if(sqltijd < mysqltijd) do
    echo sqltijd
    nieuweRij(sqltijd)
  else do
    echo mysqltijd
    nieuweRij(mysqltijd)
  end
end

[ Voor 23% gewijzigd door Eskimootje op 01-09-2003 16:25 ]


Acties:
  • 0 Henk 'm!

  • nl2dav
  • Registratie: Juni 2001
  • Laatst online: 08-09 18:55
Hmm intressante ingeving, ik ga er eens mee aan de slag :)

Acties:
  • 0 Henk 'm!

  • Trigeminus
  • Registratie: November 2000
  • Laatst online: 06-01-2024

Trigeminus

Whasbai!

Kijk eens in de mySQL documentatie en zoek op 'LEFT-/RIGHT JOIN'.

Hiermee kun je gewoon bepaalde velden uit twee databases selecteren en vervolgens sorteren met de functie 'ORDER BY' in je query. succes! :)


edit:
zie twee berichten hieronder

[ Voor 29% gewijzigd door Trigeminus op 01-09-2003 17:06 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 09:18

Creepy

Tactical Espionage Splatterer

(jarig!)
TTT schreef op 01 september 2003 @ 16:47:
Kijk eens in de mySQL documentatie en zoek op 'LEFT-/RIGHT JOIN'.

Hiermee kun je gewoon bepaalde velden uit twee databases selecteren en vervolgens sorteren met de functie 'ORDER BY' in je query. succes! :)
Je hebt in de startpost gezien dat er twee verschillende database systemen zijn, 1 SQL (ik gok op MS SQL Server) en 1 MySQL.

Zou je kunnen uitleggen hoe jij die twee databases aan elkaar linkt om zo met 1 query alles in 1 keer (uit BEIDE databases) op te halen?

[ Voor 7% gewijzigd door Creepy op 01-09-2003 16:58 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Trigeminus
  • Registratie: November 2000
  • Laatst online: 06-01-2024

Trigeminus

Whasbai!

Creepy schreef op 01 September 2003 @ 16:58:
[...]

Je hebt in de startpost gezien dat er twee verschillende database systemen zijn, 1 SQL (ik gok op MS SQL Server) en 1 MySQL.

Zou je kunnen uitleggen hoe jij die twee databases aan elkaar linkt om zo met 1 query alles in 1 keer (uit BEIDE databases) op te halen?
sorry, je hebt helemaal gelijk...stom foutje van mij. Wat ik bedoelde is dus alleen mogelijk om uit twee verschillende tables te selecteren. Iets te snel gelezen :/

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 09:18

Creepy

Tactical Espionage Splatterer

(jarig!)
TTT schreef op 01 September 2003 @ 16:59:
[...]


sorry, je hebt helemaal gelijk...stom foutje van mij. Wat ik bedoelde is dus alleen mogelijk om uit twee verschillende tables te selecteren. Iets te snel gelezen :/
;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Suffie
  • Registratie: Maart 2002
  • Laatst online: 27-01-2023
stop ze dus geordend in 2 arrays
sqlarray
MYsqlarray

en ze dan geordend in een 3e array zetten, en die op het scherm gooien
of zonder derde array, kan ook

dit principe: (weet niet helemaal precies hoe eht in PHP ge-code moet)
code:
1
2
3
4
5
6
7
8
if ($sqlarray[i]< $MYsqlarray[j]){
   print ("$sqlarray[$i]");
   $i++;
}
else{
   print ("$MYsqlarray[$i]");
   $j++;
}

I don't suffer from insanity, I enjoy every minute of it
Trotse mama van Thijs&Bas


Acties:
  • 0 Henk 'm!

Verwijderd

Als je inderdaad met MSSQL werk, kan je toch de MySQL als linked server zetten. Dan kan je toch op allebei gelijkertijd een query op loslaten
(of heb ik MSSQL niet goed begrepen?)

Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 08:07
Suffie schreef op 01 september 2003 @ 17:22:
stop ze dus geordend in 2 arrays
sqlarray
MYsqlarray

en ze dan geordend in een 3e array zetten, en die op het scherm gooien
of zonder derde array, kan ook
Wat is het voordeel van ze eerst in een array te stoppen als de gegevens net uit een database komen?

Acties:
  • 0 Henk 'm!

  • nl2dav
  • Registratie: Juni 2001
  • Laatst online: 08-09 18:55
Ik weet het niet, maar ik vond het plan van Eskimootje wel een goeie, maar;

PHP:
1
2
3
4
5
6
7
8
9
10
        while($row2 = mssql_fetch_object($result2) OR $row3 = mysql_fetch_object($result_cal)) 
        { 
        $klant = $row2->SiteName;
        $Address2 = $row2->Address2;
        $productdesc = $row2->ProductDesc;
        $productdesc = substr($productdesc, 0, 18);
        $datumtest = $row3->datum;
        echo $datumtest;
        echo "ja test!";
        }


alles uit row2 komt gewoon naar voren maar $datumtest blijft dus leeg...?

zie posting hieronder, was toch een query typo..

[ Voor 11% gewijzigd door nl2dav op 03-09-2003 23:50 ]


Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 08:07
Wat staat er in de rest van de file? En wat voor query laat je er op los? Ook een omschrijving van de database zou niet verkeerd zijn.

Acties:
  • 0 Henk 'm!

  • nl2dav
  • Registratie: Juni 2001
  • Laatst online: 08-09 18:55
*** Pardon was toch een query typo, bericht verwijderd ***

[ Voor 216% gewijzigd door nl2dav op 03-09-2003 23:48 ]


Acties:
  • 0 Henk 'm!

  • nl2dav
  • Registratie: Juni 2001
  • Laatst online: 08-09 18:55
Helaas gaat het hele verhaal alleen op als je in beide databases eenzelfde aantal rows in een keer verwerkt.

code:
1
2
3
4
5
MSSQL              MYSQL
   1                 7
   8                 3
   2                 5
   4                 6


is niet erg

code:
1
2
3
4
5
6
MSSQL              MYSQL
   1                 7
   8                 3
   2                 5
   4                 6
                     9


Ai... de 9 wordt niet verwerkt... Althans, dat is mijn ervaring. [zucht] Bufferen in een temp. MySQL table is veel fijner te bewerkstelligen alleen is dat zo ontzettend niet de bedoeling (onnodige vertraging).

[ Voor 23% gewijzigd door nl2dav op 03-09-2003 23:42 ]


  • slm
  • Registratie: Januari 2003
  • Laatst online: 12-11-2023

slm

kan je niet via de ODBC functies van php en een UNION query de 2 databases joinen ? (zelf nooit geprobeerd dus geen idee of het mogelijk is)

To study and not think is a waste. To think and not study is dangerous.


  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 08:07
nl2dav schreef op 03 September 2003 @ 23:38:
Helaas gaat het hele verhaal alleen op als je in beide databases eenzelfde aantal rows in een keer verwerkt.
Ai... de 9 wordt niet verwerkt... Althans, dat is mijn ervaring. [zucht] Bufferen in een temp. MySQL table is veel fijner te bewerkstelligen alleen is dat zo ontzettend niet de bedoeling (onnodige vertraging).
Wat dacht je ervan om de rijen eruit te gooien nadat je die loop hebt doorlopen.

if($row1) {
while($row1 = mysql_fetch_row(1)) {
echo row2;
}
}
if($row2) {
while($row2 = mysql_fetch_row(2)) {
echo row2;
}
}
Pagina: 1