WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   MySQL-query för bytessajt (https://www.wn.se/forum/showthread.php?t=18543)

fabian 2007-01-09 20:57

Jag har kört lite fast i tänkandet här.

Vill bygga en tjänst där användare registrerar sin bostad för byte, och sedan kan söka på byten, triangelbyten, rektangelbyten etc. (Som björns bostadsbytare mm.)

För att göra det så enkelt som möjligt här, låt oss säga att det enda attribut man kan ange är antal rum.

Säg då att jag har en 1:a och vill byta mot en 3:a, och att någon annan har en 3:a och vill byta mot en 1:a.

Sökningen blir då något i stil med
SELECT * FROM byten WHERE jag_har = 3 AND jag_vill_ha = 1

Problemet kommer ju när jag (Person A) har en 1:a och vill ha en 3:a.
Person B har en 2:a och vill ha en 1:a
Person C har en 3:a och vill ha en 2:a

Hur skall jag hantera denna sökning?

Jag ser ju med blotta ögat att A skall ge sin lägenhet till B som skall ge sin till C som skall ge sin till A.

Jag har bara fått total blackout och vet inte riktigt i vilken ände jag skall börja. Är tacksam för tips och idéer.

dotvoid 2007-01-10 00:50

Är inte säker på om jag tänker helt galet men borde inte något liknande funka

SELECT a.byteid, b.byteid
FROM byten a, byten b
WHERE
a.jag_har = b.jag_vill_ha AND
a.jag_vill_ha = b.jag_har

Jag är inte säker och jag orkar inte testa... ;)

fabian 2007-01-10 15:37

Okej, jag har gjort en databas nu med 3 fält

ID
rum_har
rum_villha

Såhär ser queryt ut:

SELECT a.id, b.id
FROM BP_byten a, BP_byten b
WHERE a.rum_har = b.rum_villha
AND a.rum_har = b.rum_villha
LIMIT 0 , 30

Detta retunerar:
2 1
3 2
4 2
1 3
1 4

Dvs
2 vill ha 1
3 vill ha 2
4 vill ha 2
1 vill ha 3
1 vill ha 4

Detta stämmer.

Men låt säga att jag själv är ID 3. Då vill jag ju ha fram en sådan lista med mina egna tillgångar och önskemål i fokus, hur gör jag queryt då?

Oskar Lindgren 2007-01-10 18:07

Citat:

Men låt säga att jag själv är ID 3. Då vill jag ju ha fram en sådan lista med mina egna tillgångar och önskemål i fokus, hur gör jag queryt då?
Lägg på: AND a.id=3 ?

fabian 2007-01-10 18:32

Okej, queryt ser nu ut såhär:

SELECT a.id, b.id
FROM BP_byten a, BP_byten b
WHERE (
a.rum_har = b.rum_villha
AND a.rum_har = b.rum_villha
AND a.id =3
)

Svaret jag får är att 3 vill ha 2, vilket ju är sant, men vad jag menade (förklarade kanske lite otydligt) är att jag vill ha hela kedjan baserad på nummer 3.

Att 3 vill ha 2 är en start, men jag vill ju också se att det är möjligt att uppfylla 2´s behov genom att 2 också vill ha 1.

Gud vad krångligt detta blev.

Har gjort i html hur jag vill presentera resultatet.

www.onsdag.nu/byte/


Alla tider är GMT +2. Klockan är nu 22:37.

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