Toon posts:

[mysql] Query voor 2 tabellen zonder relaties

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb 2 tabellen die precies hetzelfde zijn opgebouwd (behalve de inhoud natuurljik).
Er zijn geen relaties tussen de tabellen.
En ik wil ze liever niet samenvoegen.

Voorbeeld:

Tabel1: id | naam | adres | woonplaats
Tabel2: id | naam | adres | woonplaats


Is het mogelijk om een query uit te voeren waardoor je in beide tabellen kan zoeken op een bepaalde naam in de kolom "naam"?


Tot nu toe heb ik alleen voorbeelden kunen vinden waar 1 kolom gekoppeld moet worden aan een kolom in de andere tabel.
Dat kan bij mijn tabellen dus niet.

Bedankt!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:02

gorgi_19

Kruimeltjes zijn weer op :9

Ik weet niet of MySQL het kan, maar normaal gesproken gebruik je hier UNION voor:
Select ....
UNION
Select ....

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Altaphista
  • Registratie: Juli 2001
  • Laatst online: 09:21

Altaphista

1. check manual, 2. ask

SELECT tabel1.*, tabel2.* where tabel1.naam = 'bla' OR tabel2.naam = 'bla'
?

Je gaat het pas zien als je het doorhebt.


  • whoami
  • Registratie: December 2000
  • Laatst online: 13:00
Altaphista schreef op 09 augustus 2002 @ 15:26:
SELECT tabel1.*, tabel2.* where tabel1.naam = 'bla' OR tabel2.naam = 'bla'
?


Dan krijg je de resulltaten van tabel1 en tabel2 in één row en dat is niet zo handig.
Daarnaast zal je als resultaat een cartesiaans product krijgen omdat je de tabellen tabel1 en tabel2 niet 'linked' met elkaar. Hierdoor kan je query een lange executietijd nodig hebben en krijg je aantal records in tabel1 x aantal records in tabel2 terug. Kortom, die query is fout.

Je kan het doen met een UNION zoals eerder voorgesteld (als dat mogelijk is in MySQL), maar dat zijn eigenlijk 2 queries die je aan elkaar 'plakt' en dat kan handig zijn als je bv een sortering op het ganse resultaat wilt doorvoeren.
Wil je dat niet, dan kan je evengoed 2 queries gaan uitvoeren.

https://fgheysels.github.io/


Verwijderd

Topicstarter
UNION is pas mogelijk vanaf MySQL 4
Mijn hostingprovider draait helaas nog op MySQL 3.23 dus dat gaat niet door.

SELECT tabel1.*, tabel2.* where tabel1.naam = 'bla' OR tabel2.naam = 'bla'
Als ik deze in phpMyAdmin invoer dan plakt hij de tabellen naast elkaar en komen dezelfde rijen telkens terug...
Ik ga hier nog effe mee verder proberen

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:00
Verwijderd schreef op 09 augustus 2002 @ 16:04:

SELECT tabel1.*, tabel2.* where tabel1.naam = 'bla' OR tabel2.naam = 'bla'
Als ik deze in phpMyAdmin invoer dan plakt hij de tabellen naast elkaar en komen dezelfde rijen telkens terug...
Ik ga hier nog effe mee verder proberen


Zoals ik eerder gezegd had, een cartesiaans product... :) Het DBMS gaat voor iedere rij uit tabel1 iedere rij uit tabel2 gaan ophalen, gewoon omdat hij niet weet welke rijen hij met elkaar moet koppelen...

https://fgheysels.github.io/


Verwijderd

Topicstarter
nee dat had ik ook in de gaten :)

Ik kan uiteraard wel 2 aparte queries uitvoeren.

De bedoeling is om uiteindelijk een zoekmachine in php te maken die in de 2 tabellen tegelijk kan zoeken dus het zou mooi zijn als het lukt

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Waarom maak je niet gewoon 2 querys?

edit:

Je was me net voor. Maar je kan de resultaten natuurlijk wel in een tijdelijke tabel opslaan zodat je daarna nog kan sorteren ofzo

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • whoami
  • Registratie: December 2000
  • Laatst online: 13:00
Verwijderd schreef op 09 augustus 2002 @ 16:12:
nee dat had ik ook in de gaten :)

Ik kan uiteraard wel 2 aparte queries uitvoeren.

De bedoeling is om uiteindelijk een zoekmachine in php te maken die in de 2 tabellen tegelijk kan zoeken dus het zou mooi zijn als het lukt


Als je dat nu doet met 1 of met 2 queries maakt het toch niet uit? Je krijgt de resultaten zowieso terug als je goed zoekt. :?

https://fgheysels.github.io/


Verwijderd

Topicstarter
Yep de resultaten krijg je wel terug maar niet doorelkaar/gesorteerd en dat zou zo mooi zijn :)

<quote>Maar je kan de resultaten natuurlijk wel in een tijdelijke tabel opslaan zodat je daarna nog kan sorteren ofzo</quote>
Een tijdelijke tabel is een mogelijkheid... ik weet niet hoe je dat bedoeld maar als die tijdelijke tabel regelmatig ververst moet worden kan dit wel even duren aangezien het totaal 5000 records zijn en binnenkort nog veel meer waarschijnlijk...

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 09 augustus 2002 @ 15:14:
Ik heb 2 tabellen die precies hetzelfde zijn opgebouwd (behalve de inhoud natuurljik).
Er zijn geen relaties tussen de tabellen.
En ik wil ze liever niet samenvoegen.

Waarom wil je ze niet samenvoegen trouwens?
Ze zijn exact hetzelfde en dus is het niet of nauwelijks te verantwoorden dat je ze niet samenvoegt :)

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Verwijderd schreef op 09 augustus 2002 @ 16:19:
Een tijdelijke tabel is een mogelijkheid... ik weet niet hoe je dat bedoeld maar als die tijdelijke tabel regelmatig ververst moet worden kan dit wel even duren aangezien het totaal 5000 records zijn en binnenkort nog veel meer waarschijnlijk...
Ik bedoel een tijdelijke tabel in je geheugen. Dus dat je alleen je resultaten van je query daarin opslaat en dan op die tabel in je geheugen de sorteer query toepast. Na je query kan je de tijdelijke tabel weer vrijgeven.

Ik zou zelf echter gewoon de tabellen samenvoegen dat lijkt me een stuk efficienter

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
Eventueel kan je ze ook samenvoegen met een kolommetje erbij om onderscheid te maken bij welke tabel het oorspronkelijk hoorde

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:00
Verwijderd schreef op 09 augustus 2002 @ 16:19:
Yep de resultaten krijg je wel terug maar niet doorelkaar/gesorteerd en dat zou zo mooi zijn :)

<quote>Maar je kan de resultaten natuurlijk wel in een tijdelijke tabel opslaan zodat je daarna nog kan sorteren ofzo</quote>
Een tijdelijke tabel is een mogelijkheid... ik weet niet hoe je dat bedoeld maar als die tijdelijke tabel regelmatig ververst moet worden kan dit wel even duren aangezien het totaal 5000 records zijn en binnenkort nog veel meer waarschijnlijk...


Als een UNION mogelijk is, doe dan een UNION.
Anders kun je een temp. table gebruiken. Je insert alle rijen die de queries teruggeven in de temp.table en je doet een select uit die temp table om ze er gesorteerd uit te halen. Daarna verwijder je de temp. table (of de inhoud ervan). Het aantal records in uw tabellen heeft daar niets mee te maken, enkel het aantal gereturnde rijen door uw queries.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ok dan is samenvoegen inderdaad de beste oplossing
Iedereen bedankt voor het meedenken en de tips! :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Dash2in1:
Eventueel kan je ze ook samenvoegen met een kolommetje erbij om onderscheid te maken bij welke tabel het oorspronkelijk hoorde
Dat kolommetje erbij geeft natuurlijk gewoon aan om wat voor soort record het gaat, oftewel het onderscheid wat je eerst maakte door het in 2 tabellen te zetten, maak je nu op basis van een extra veld

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1