WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Problem med en MySQL sökning (https://www.wn.se/forum/showthread.php?t=5324)

guran 2005-01-05 20:27

Om du skall göra en join på två tabeller så måste du ha ett värde för länkar dem tillsammans. T.ex. skall din usertable ha ett user id och din imagetable ett user id. User id i imagetable talar om vilken user i usertable som en image eller flera image tillhör. En korrekt SQL-fråga skulle då vara:

Kod:

SELECT usertable.name FROM usertable, imagetable
WHERE usertable.user_id=imagetable.user_id

Observera att frågan ovan endast kommer att returnera de namn som har en en post i tabellen imagetable.

Att länka två tabeller utan att ange vad de har gemensamt kommer att returnera alla tänkbara möjligheter som finns mellan tabellerna. Ett exempel på detta är om en tabell innehåller två rader med värdena 1 och 2 och en anna tabell innehåller två rader med värdena a och b skulle en länkning utan att ange vad de har gemensamt ge resultatet:

1 a
1 b
2 a
2 b

Detta kallas för Cartesian join. I princip blir resultatet antal rader i tabell_1 * antal rader i tabell_2. Har du två tabeller med 100 rader i varje blir resultatet 10.000 rader. Så två tabeller med 1.000 rader blir 1 miljon rader i retur. Klart att din server får problem.

Det vore kanske bättre om du angav vad du vill ha för resultat, så att en korrekt fråga kan utformas. Jag har en känsla av att du inte får det resultat du vill ha rent logiskt även om resultatet kan se ut att vara riktigt.

fabian 2005-01-06 00:12

Citat:

Originally posted by guran@Jan 5 2005, 21:27
Om du skall göra en join på två tabeller så måste du ha ett värde för länkar dem tillsammans. T.ex. skall din usertable ha ett user id och din imagetable ett user id. User id i imagetable talar om vilken user i usertable som en image eller flera image tillhör. En korrekt SQL-fråga skulle då vara:

Kod:

SELECT usertable.name FROM usertable, imagetable
WHERE usertable.user_id=imagetable.user_id

Observera att frågan ovan endast kommer att returnera de namn som har en en post i tabellen imagetable.

Att länka två tabeller utan att ange vad de har gemensamt kommer att returnera alla tänkbara möjligheter som finns mellan tabellerna. Ett exempel på detta är om en tabell innehåller två rader med värdena 1 och 2 och en anna tabell innehåller två rader med värdena a och b skulle en länkning utan att ange vad de har gemensamt ge resultatet:

1 a
1 b
2 a
2 b

Detta kallas för Cartesian join. I princip blir resultatet antal rader i tabell_1 * antal rader i tabell_2. Har du två tabeller med 100 rader i varje blir resultatet 10.000 rader. Så två tabeller med 1.000 rader blir 1 miljon rader i retur. Klart att din server får problem.

Det vore kanske bättre om du angav vad du vill ha för resultat, så att en korrekt fråga kan utformas. Jag har en känsla av att du inte får det resultat du vill ha rent logiskt även om resultatet kan se ut att vara riktigt.

Tack för en bra beskrivning. Upptäckte att när jag sökte endast på användare med bilder så funkade det det perfekt, men när det var användare utan bild så funkade det inte. Och eftersom jag har snart 15000 medlemmar så blir det en del att söka igenom...

För att bättre förstå vad jag vill ha ut, kolla på
sny gga st. nak en.o rg/s ear ch.php
(Fast ta bort dom onödiga mellanslagen)



Det är inte jag som kodat sajten, utan det är ett köpt script, så jag har nog inte 100% koll på exakt vad det är jag vill ha ut av sökningen, och den är absolut inte optimerad.

För att se hur söksidan ser ut så har ni sourcen här:
sn ygg as t. na ke n. org /s ea rc h. ph p.txt
s nygg ast. nake n.or g/se arch resu lts .php .tx t


Har ni tips på övriga förbättringar i den så är ni varmt välkomna, jag är newbie.

kullervo 2005-01-06 00:20

Citat:

Originally posted by fabian@Jan 6 2005, 00:12
För att se hur söksidan ser ut så har ni sourcen här:
sn ygg as t. na ke n. org /s ea rc h. ph p.txt
s nygg ast. nake n.or g/se arch resu lts .php .tx t

Tips: Byt namn på filerna till .phps istället. Om du har akviterat stöd för det på servern så blir det riktigt snygg utskrift.
Exempel: hedkandi.kullervo. se/class.phpmailer.phps

fabian 2005-01-06 00:37

Citat:

Ursprungligen postat av kullervo
Citat:

Ursprungligen postat av fabian
För att se hur söksidan ser ut så har ni sourcen här:
sn ygg as t. na ke n. org /s ea rc h. ph p.txt
s nygg ast. nake n.or g/se arch resu lts .php .tx t

Tips: Byt namn på filerna till .phps istället. Om du har akviterat stöd för det på servern så blir det riktigt snygg utskrift.
Exempel: hedkandi.kullervo. se/class.phpmailer.phps

Testade med search.phps, men fick inget speciellt vackert resultat. Vad heter funktionen som gör det fint?

kullervo 2005-01-06 00:50

Citat:

Ursprungligen postat av fabian
Citat:

Originally posted by -kullervo@Jan 6 2005, 01:20
Citat:

Ursprungligen postat av fabian
För att se hur söksidan ser ut så har ni sourcen här:
sn ygg as t. na ke n. org /s ea rc h. ph p.txt
s nygg ast. nake n.or g/se arch resu lts .php .tx t

Tips: Byt namn på filerna till .phps istället. Om du har akviterat stöd för det på servern så blir det riktigt snygg utskrift.
Exempel: hedkandi.kullervo. se/class.phpmailer.phps


Testade med search.phps, men fick inget speciellt vackert resultat. Vad heter funktionen som gör det fint?

Eftersom du kör Apache slänger du in det här i httpd.conf
Kod:

AddType application/x-httpd-php-source .phps
Edit: Jag vet iofs inte om det funkar på Apache 2 som du kör, men det borde vara samma syntax. Kolla annars i installationsmanualen till PHP.

fabian 2005-01-06 03:10

Citat:

Ursprungligen postat av kullervo
Citat:

Originally posted by -fabian@Jan 6 2005, 00:37
Citat:

Originally posted by -kullervo@Jan 6 2005, 01:20
Citat:

Ursprungligen postat av fabian
För att se hur söksidan ser ut så har ni sourcen här:
sn ygg as t. na ke n. org /s ea rc h. ph p.txt
s nygg ast. nake n.or g/se arch resu lts .php .tx t

Tips: Byt namn på filerna till .phps istället. Om du har akviterat stöd för det på servern så blir det riktigt snygg utskrift.
Exempel: hedkandi.kullervo. se/class.phpmailer.phps


Testade med search.phps, men fick inget speciellt vackert resultat. Vad heter funktionen som gör det fint?


Eftersom du kör Apache slänger du in det här i httpd.conf
Kod:

AddType application/x-httpd-php-source .phps
Edit: Jag vet iofs inte om det funkar på Apache 2 som du kör, men det borde vara samma syntax. Kolla annars i installationsmanualen till PHP.

Yes, funkar fint.

Har gjort om båda filerna till phps nu.


Alla tider är GMT +2. Klockan är nu 18:23.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson