Toon posts:

[MYSQL] Hoe word je query als je in meerdere ..

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ok ik wil dat mijn sql query in twee tabellen zoekt:

Hoe moet dat?

Ik d8 zelf :

SELECT * FROM 'tabel1' OR 'tabel2' WHERE 'kolom1' OR 'kolom2' LIKE '%$trefwoord%' ORDER BY $sort DESC";

Dat werkt niet echt :(

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
dat zul je met twee aparte queries moeten doen.

Verwijderd

Topicstarter
Jah ok doen ik dat maar :)

Thx

Verwijderd

Je hoeft dit niet met 2 verschillende queries te doen, als je tenminste een goede structuur in je database hebt aangebracht. Daarom is MySQL een relationele database: tabellen zijn aan elkaar gerelateerd.

Vertel wat je in je tabellen hebt staan, dan kunnen we beter vaststellen of jou probleem dmv een 'left join' opgelost kan worden.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 22 oktober 2001 11:55 schreef Anchorman het volgende:
[...]Daarom is MySQL een relationele database: tabellen zijn aan elkaar gerelateerd.[...]
Is niet waar.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Strict genomen is klopt dat inderdaad, foreign keys zijn niet aanwezig in MySQL. Echter, het gaat om het principe, je kan bepaalde tabellen aan elkaar koppelen in queries, vandaar relationeel.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 22 oktober 2001 12:19 schreef Anchorman het volgende:
Strict genomen is klopt dat inderdaad, foreign keys zijn niet aanwezig in MySQL. Echter, het gaat om het principe, je kan bepaalde tabellen aan elkaar koppelen in queries, vandaar relationeel.
En opgelegde relaties worden NIET geforceerd door de database. dus NIET relationeel.

tabellen aan elkaar koppelen in queries kan je in ELKE database doen, dat maakt de database echter nog NIET relationeel.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


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

drm

f0pc0dert

* drm agrees with dusty.

In principe kan er in MySQL geen inconsistente database bestaan, omdat de relaties er niet in vastgelegd zijn. Die relaties heb jij als ontwerper in principe alleen maar in je hoofd.

Die relaties kun je in de database suggereren door een goede consequente naamgeving te gebruiken, verder niet.

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


  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 27-08 11:17

Defspace

Administrator

Of MySQL nou relationeel is of niet, was niet de vraag.
De query moet zijn:

SELECT * FROM tabel1, tabel2 WHERE tabel1.kolom1 like '%$trefwoord%' OR tabel2.kolom2 LIKE '%$trefwoord%' ORDER BY $sort DESC";

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op maandag 22 oktober 2001 15:01 schreef Defspace het volgende:
Of MySQL nou relationeel is of niet, was niet de vraag.
De query moet zijn:

SELECT * FROM tabel1, tabel2 WHERE tabel1.kolom1 like '%$trefwoord%' OR tabel2.kolom2 LIKE '%$trefwoord%' ORDER BY $sort DESC";
probeer dit eens in een testje, en zie waarom het niet klopt.

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

drm

f0pc0dert

zie manual / left join

Beetje puzzelen kom je er best wel uit. Als we het allemaal voorkauwen word je er toch niet echt beter in.

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


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 22 oktober 2001 14:55 schreef drm het volgende:
* drm agrees with dusty.
In principe kan er in MySQL geen inconsistente database bestaan[...]
Eeehhhhh... juist WEL inconsistent.. maandag ochtend? :+ ;)

relationeel = consistent.
niet relationeel = kans op inconsistentie.

Duidelijk een maandag ochtend momentje van je ? :)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Op zondag 21 oktober 2001 19:30 schreef BeNNiS het volgende:

SELECT * FROM 'tabel1' OR 'tabel2' WHERE 'kolom1' OR 'kolom2' LIKE '%$trefwoord%' ORDER BY $sort DESC";

Dat werkt niet echt :(
[disclaimer] Ik heb vrijwel geen ervaring met MySQL, maar wel met andere RDBMS's [/disclaimer]

Tabel1 en tabel2 hebben dezelfde structuur? Of zijn door niet 'select *' te gebruiken maar 'select <de columns die je wilt hebben>'? Desnoods door die kolommen te casten naar een ander type?
Ik zag net dat MySQL vanaf v4.0.0 UNIONs ondersteunt (met wat beperkingen: ORDER BY kan bv. alleen maar op de laatste SELECT).

Wanneer de tabelstructuur overeenkomt, kun je iets dergelijks gebruiken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT 
  * 
FROM 
  tabel1
WHERE 
  kolom1 LIKE '%$trefwoord%'
UNION
SELECT 
  * 
FROM 
  tabel2
WHERE 
  kolom2 LIKE '%$trefwoord%'
ORDER BY 
  $sort DESC

Er zullen wel wat quootjes, $-tekens, etc. verkeerd staan, want PHP gebruik ik ook al niet. :+
Maar 't gaat om 't principe...

  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 14-09 23:09
Op maandag 22 oktober 2001 16:11 schreef dusty het volgende:

[..]

Eeehhhhh... juist WEL inconsistent.. maandag ochtend? :+ ;)

relationeel = consistent.
niet relationeel = kans op inconsistentie.

Duidelijk een maandag ochtend momentje van je ? :)
DRM heeft wel gelijk. De DB kan niet inconsistent zijn, aangezien je geen relaties kan aangeven. De enige relaties die er zijn heb je in je hoofd zitten. Dus ze kunnen wel inconsistent zijn met je hoofd, maar niet in de DB. :+

/blaat

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


Verwijderd

Op maandag 22 oktober 2001 12:24 schreef dusty het volgende:
En opgelegde relaties worden NIET geforceerd door de database. dus NIET relationeel.

tabellen aan elkaar koppelen in queries kan je in ELKE database doen, dat maakt de database echter nog NIET relationeel.
Relationele databases geven je de mogelijkheid om relaties tussen tabellen te leggen, en ja, dat kan nu in principe met iedere database (op misschien de oude vertrouwde kaartenbak na).
Referentiele integriteit is een heel ander verhaal...

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 22 oktober 2001 20:32 schreef Taradino het volgende:
[..]
DRM heeft wel gelijk. De DB kan niet inconsistent zijn, aangezien je geen relaties kan aangeven. De enige relaties die er zijn heb je in je hoofd zitten. Dus ze kunnen wel inconsistent zijn met je hoofd, maar niet in de DB. :+
/blaat
Adres van een bedrijf met bedrijfID die niet bestaat.
Betekent dus in je database inconsistente data.

Bij een relationele database wordt dat afgevangen.

;)

* dusty is goed in blaat.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 22 oktober 2001 20:55 schreef Afterlife het volgende:
[..]
Relationele databases geven je de mogelijkheid om relaties tussen tabellen te leggen, en ja, dat kan nu in principe met iedere database (op misschien de oude vertrouwde kaartenbak na).
Referentiele integriteit is een heel ander verhaal...
Bij die definitie moet je een kaartenbak ook relationeel noemen.

jij gebruikt duidelijk deze definitie.

Ik gebruik persoonlijk de Codd's definitie van een relationele database.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Op maandag 22 oktober 2001 21:32 schreef dusty het volgende:
Bij die definitie moet je een kaartenbak ook relationeel noemen.
:) Nope, een 'flat file' kaartenbak is alleen gerelateerd aan zichzelf. Plat dus, op misschien wat picklist-achtige dingen na. (OK, daar begint 't grensgebied...)
jij gebruikt duidelijk deze definitie.
Da's wel heel erg beperkt...
"Vroeger" werden dBASE III, FoxPro, Clipper, etc. verkocht als RDBMS systemen. Relaties konden daarmee goed gelegd worden, ook al was 't allemaal client side. (En moest dus ook de client zorgen voor de integriteit)
Ik gebruik persoonlijk de Codd's definitie van een relationele database.
Goede definitie van referentiele integriteit... :)

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

drm

f0pc0dert

Op maandag 22 oktober 2001 16:11 schreef dusty het volgende:

[..]

Eeehhhhh... juist WEL inconsistent.. maandag ochtend? :+ ;)

relationeel = consistent.
niet relationeel = kans op inconsistentie.

Duidelijk een maandag ochtend momentje van je ? :)
:O :z definitely ;)

Wat ik eigenlijk bedoelde te zeggen is dat je in principe een database op kan zetten waarbij de relaties in de database (op MySQL) niveau niet te ontdekken zijn, dus kan hij ook nooit inconsistent zijn, omdat het in feite alleen maar een grote meuk met data is.

Op "denk-niveau", of "ontwerp niveau" leg je die relaties natuurlijk wel, maar zal je bij feitelijke opzet van de database de relaties in de interface moeten leggen (in de queries, dus). Daarin laat MySQL je de mogelijkheid fouten te maken, en dus is de kans op inconsistentie erg groot.

snappie? ;)

* drm is niet goed in blaat, maar kan wel goed doen alsof
:)

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


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 22 oktober 2001 21:50 schreef Afterlife het volgende:
Goede definitie van referentiele integriteit... :)
Wat bij mij een onderdeel is van een relationele database.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Het gaat er niet alleen om dat relaties gelegt kunnen worden maar dat deze ook bewaakt dienen te worden!
Pagina: 1