[SQL] Select over meerdere databases...

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

  • amphora
  • Registratie: December 1999
  • Laatst online: 10:26

amphora

Websites & Fotografie

Topicstarter
Ik heb twee tabellen, a en b. bijde hebben een veld x. Nu wil ik in één SQL statement bijde tabellen in één keer laten zien gesorteerd op veld x. De tabellen hebben verder geen relatie met elkaar, a.x en b.x hebben dus geen relatie. Hoe doe ik dit?

nickdekruijk.nl Websites & Fotografie


Verwijderd

Je zegt 2 databases maar ik krijg het idee dat je tabellen bedoeld dus ik deeeeeeeenkk dat je zoiets nodig hebt.

select x from a
union
select x from b

--Ray

  • amphora
  • Registratie: December 1999
  • Laatst online: 10:26

amphora

Websites & Fotografie

Topicstarter
Warm, alleen jammer dat MySQL geen UNION ondersteund

nickdekruijk.nl Websites & Fotografie


  • TimMer
  • Registratie: Februari 2000
  • Niet online
Is het niet met join op te lossen ?

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 14-09 12:05

Tuinhark

Retro

Das toch alleen voor mét relatie?

:Y)

  • Elissen
  • Registratie: Januari 2000
  • Laatst online: 27-07 15:54
Als je 2 overeen komende velden hebt kan het wel:

SELECT * FROM tabel_a INNER JOIN tabel_b ON tabel_a.veldx = tebel_b.veldy;

Relaties zijn (naar mijn idee) alleen om intregiteit te bewaren en voor querybuilders zoals in Access.

  • amphora
  • Registratie: December 1999
  • Laatst online: 10:26

amphora

Websites & Fotografie

Topicstarter
Maar de velden komen niet overeen, in veld x zit wel een datum (in mijn geval dan) maar dat zijn andere data dan in tabel b

nickdekruijk.nl Websites & Fotografie


Verwijderd

Wat komt dan wel overeen?

Verwijderd

Wat dacht je van zoiets:

select x.*, y.* from tabelx x, tabely y where x.id=y.id

  • Elissen
  • Registratie: Januari 2000
  • Laatst online: 27-07 15:54
Volgens mij krijg je dan hetzelfde als met een inner join. Alleen is voor de server de interne afhandeling anders; de join heeft een lagere systeembelasting.

  • amphora
  • Registratie: December 1999
  • Laatst online: 10:26

amphora

Websites & Fotografie

Topicstarter
Hmmm. Het is blijkbaar toch niet zo makkelijk.
Ik zat er aan te denken om een temporary table te maken hoe kan je dat het beste doen? Dus eerste een tabel maken, 2x een select uitvoeren die de resultaten in de temp tabel zet. En dan daar een select op loslaten en die resultaten tonen. Kan iemand een simpel voorbeeldje hiervoor maken?

nickdekruijk.nl Websites & Fotografie


Verwijderd

wat dacht je hier van, simpel searchje op zend:

<?php
echo "Connecting as mysql<BR>\n";
$connection1 = mysql_connect('localhost', 'mysql', '') or die($php_errormsg);
echo "connection1 is $connection1<BR>\n";
echo "Selecting test for mysql user<BR>\n";
mysql_select_db('test', $connection1) or @die("Error " . $php_errormsg . mysql_error());
echo "Connection as joyce<BR>\n";
$connection2 = mysql_connect('localhost', 'joyce', '') or die($php_errormsg);
echo "connection2 is $connection2<BR>\n";
echo "Selecting books for joyce user<BR>\n";
$db2 = mysql_select_db('techbizbookguide', $connection2) or die(mysql_error());
$query1 = "select foo from test";
$query2 = "select title, authorFirst, authorLast from bookinfo";
echo "Querying test<BR>\n";
$users = mysql_query($query1, $connection1) or die(mysql_error());
echo "Querying books<BR>\n";
$books = mysql_query($query2, $connection2) or die(mysql_error());
echo "Foos from test<BR>\n";
while (list($foo) = mysql_fetch_row($users)){
echo $foo, "<BR>\n";
}
echo "Books in techbizbookguide<BR>\n";
while (list($title, $authorFirst, $authorLast) = mysql_fetch_row($books)){
//Use trim in case we have a book by "Madonna" or "Prince" or...
echo $title, ' by ', trim($authorFirst . ' ' . $authorLast), "<BR>\n";
}
?>

  • amphora
  • Registratie: December 1999
  • Laatst online: 10:26

amphora

Websites & Fotografie

Topicstarter
Bij deze oplossing laat je eerst tabel a zien en dan tabel b. Maar a en b moeten worden samengevoegd.

nickdekruijk.nl Websites & Fotografie


Verwijderd

kon dat niet met bla.tabel1, blabla.tabel2 ofzoiets?

Verwijderd

wat dacht je van iets als:

select a.*, b.* from tabela a, tabelb b where (a.x = b.x) order by a.x;

Verwijderd

create temp table FratsTab(fratser char(30));

insert into FratsTab
select x as fratser from a;

insert into FratsTab
select x as fratser from b;

select * from FratsTab
order by fratser;

--Ray

Verwijderd

- foutje -
Pagina: 1