Zoeken in meedere tabellen. Hoe dan?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- DHU -

- DHU -

10/02/2020 09:35:19
Quote Anchor link
Om te beginnen heb ik geen idee of ik hier in de juiste categorie zit.. Zo niet, verzoek aan admin deze dan te verplaatsen (thnx in advance).

Waar ik naar op zoek ben.
Ik zoek me zo'n beetje het apalazarus naar 'n search engine die een ingevulde waarde kan zoeken in meerdere tabellen van een database.

Hier kan ik maar geen voorbeeld van vinden hoe zoiets nu in elkaar steekt. Ik krijg plenty responses hoe ik kan zoeken in één tabel maar ik zoek een engine die in vijf tabellen kijkt.

Iemand enige notite waar ik moet gaan kijken. Ook hier vind ik hier niet zo veel over. Mooiste zou zijn dat ik aan kan geven in welke tabel er gezocht moet worden maar waneer ik die waarde niet mee geef er dan in vijf tabellen gekeken gaat worden.

Specief verzoek.. i know. Maar is het onmogelijk? Wie kan me daar bij op weg helpen of heeft enig idee?
 
PHP hulp

PHP hulp

26/04/2024 14:46:38
 
Jan R

Jan R

10/02/2020 09:42:18
Quote Anchor link
Kan je iets doen met union?
https://www.w3schools.com/sql/sql_union.asp

dat word dan 5 tabellen met 4 keer union er tussen. Het aantal veldnamen moet wel gelijk zijn

Jan
 
- Ariën  -
Beheerder

- Ariën -

10/02/2020 10:12:02
Quote Anchor link
Misschien zou het wel praktisch zijn om alles te indexeren, zodat je in die zoekindex kan zoeken.

Kijk bijv.eens naar Elastic Search of Sphinx.
 
- DHU -

- DHU -

10/02/2020 10:18:46
Quote Anchor link
Jan R op 10/02/2020 09:42:18:
Kan je iets doen met union?
https://www.w3schools.com/sql/sql_union.asp

dat word dan 5 tabellen met 4 keer union er tussen. Het aantal veldnamen moet wel gelijk zijn

Jan


Niet alleen het aantal veldnamen maar ook de namen dienen gelijk te zijn. Dat is mijn geval niet zo en kan ik ook niet aanpassen.
 
- Ariën  -
Beheerder

- Ariën -

10/02/2020 10:22:10
Quote Anchor link
Dan zou ik eerder denken aan een eigen searchengine waarvan ik er een paar heb genoemd, tenzij je graag complexe queries wilt schrijven of 'dure' queries wilt schrijven die traag zijn.
Gewijzigd op 10/02/2020 10:22:58 door - Ariën -
 
- DHU -

- DHU -

10/02/2020 10:58:27
Quote Anchor link
**quoteknip*

Geen idee of het werkbaar is ... maar er zijn tutors bij.. Ga ik eens mee aan de slag.. Kiek'n wa wordt ;-)
Gewijzigd op 10/02/2020 11:04:22 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

10/02/2020 11:02:37
Quote Anchor link
Op internet staan genoeg handleidingen en voorbeelden. Ik denk dat je er wel uit komt.
Gewijzigd op 10/02/2020 11:03:14 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

10/02/2020 15:55:09
Quote Anchor link
Of je zorgt ervoor dat alle "content" (of op zijn minst, alle soortgelijke content) in één tabel (op eenzelfde plaats) staat (of op een uniforme manier staat opgeslagen).

Stel bijvoorbeeld dat je een aantal tabellen hebt:
- nieuws
- artikelen
- ...

Deze hebben alle waarschijnlijk een tekstveld. Als je nou al deze teksten in één (aparte) teksten-tabel zet, dan staat al die informatie ten minste bij elkaar. Dan ben je er natuurlijk nog niet. Je kunt niet rechtstreeks in de teksten-tabel "zoeken" omdat je niet op voorhand precies weet waar deze informatie bijhoort.

Aan de andere kant, meestal ben je in een gericht gebied (nieuws, forum, reacties, whatever) en meestal ook met gerichte argumenten (vaste waarden, en niet simpelweg "full text") aan het zoeken.

Ik denk ook dat de moeite die je moet doen in zekere zin verankerd is in de manier waarop je database is opgebouwd.

Een database (en bijbehorende tabellen) zou geconstrueerd moeten worden met de filosofie dat alles wat je er inkiepert er ook op een gegeven moment uitgepeuterd kan worden, bij voorkeur op een makkelijker manier :). Indien de database niet op een zodanige manier ontworpen is, dan wordt dit mogelijk nog een hele kluif.

Quote:
Mooiste zou zijn dat ik aan kan geven in welke tabel er gezocht moet worden maar waneer ik die waarde niet mee geef er dan in vijf tabellen gekeken gaat worden.

Dit kan prima. Je kunt immers een query - een SQL-statement - dynamisch opbouwen. Wat je aanvinkt in je formulier qua zoekgebied worden dan de tabellen/zoekgebieden in je database. En als je dus bijvoorbeeld voorgenoemde teksten had opgenomen in een enkele tabel, dan zou je dit zelfs tot een soort van conditie (WHERE content_type = 'news' of wat dan ook, maar dan met een id uiteraard) kunnen beperken, in plaats van dat je allemaal tabellen aan elkaar moet jassen.

Zie je hoe het ontwerp van je database een directe invloed heeft op de complexiteit van dit soort queries?

De manier waarop je database is opgezet kan je hierbij dus enorm helpen, en zou ook in dienst moeten staan van de mogelijke informatievragen die hierop afgevuurd kunnen worden.
Gewijzigd op 10/02/2020 15:58:07 door Thomas van den Heuvel
 
- Ariën  -
Beheerder

- Ariën -

10/02/2020 16:31:29
Quote Anchor link
Wat Thomas zegt, daar ga ik zeker in mee. Echter is het niet altijd mogelijk als je verschillende software webapplicaties hebt. Ik heb uit een eerdere thread van Dirk begrepen dat er sprake was een databasestructuur die niet zomaar aangepast kan worden, en ik heb geen idee of dat ook hierbij geldt.

Je zou in sommige gevallen de velden kunnen aliassen met een AS functie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT
 titel AS title
 inhoud AS content
FROM
 tabelnaam
WHERE
.....


Maar ik kan mij indenken dat een searchindex ook zeker gewenst kan zijn. Vooral als je op meerdere voorwaarden wilt zoeken.
 
Jan R

Jan R

10/02/2020 18:34:43
Quote Anchor link
"Dirk:
Niet alleen het aantal veldnamen maar ook de namen dienen gelijk te zijn. Dat is mijn geval niet zo en kan ik ook niet aanpassen.


Toch niet. De namen van de 1° query worden wel gebruikt maar moeten niet overeenkomen met de volgende querys
 



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.