WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Två databaser + en relationsdatabas (https://www.wn.se/forum/showthread.php?t=1058771)

elitasson 2013-08-12 14:55

Två databaser + en relationsdatabas
 
Hej!

Edit:Kanske ska vara tabeller istället för databaser i titlen. En admin får gärna ändra det.

Jag hade behövt lite hjälp med att förstå mig på de olika JOIN-funktionerna i MySQL till ett litet problem jag stött på.

Mysql-satsen som jag vill få rätt på ska användas för att autocomplete:a en sökruta där man vill lägga till en spelare i ett grupp . Om spelaren redan finns i gruppen ska denne inte komma upp i sökresultatet.

Jag har följande databaser (aningen förenklade):
player:
- id
- first_name
- ss_number

group:
-id
-name

rel_player_group:
-id
-player_id
-group_id

Exempel:
Totalt finns det 3 spelare. En av dessa spelare är tillagda i en grupp. När jag söker på fler spelare jag vill lägga till i denna grupp ska de två spelare som inte är tillagda i gruppen visas som förslag.

linusoleander 2013-08-12 15:12

Gör en LEFT JOIN mellan player och group (och din relationstabell). Lägg sedan till WHERE group.id IS NULL

Har inte riktigt tid att skriva någon kod just nu.
Någon annan användare här på forumet kanske kan bidra med lite kod.

elitasson 2013-08-12 15:22

Lyckades får hjälp i WNs irc-kanal.

Resultatet blev ungefär så här:
Kod:

SELECT * FROM player WHERE id NOT IN (SELECT player_id as id FROM rel_player_group WHERE group_id = '$groupId')
Hurvida det funkar på miljoner eller miljarder rader i tabellerna återstår att se.

Nihilnovi 2013-08-13 11:04

Se till att group_id och player_id är indexerade så ska det inte vara något problem, det är inga fulltext sökningar du gör :)

elitasson 2013-08-15 08:59

Låter bra det!


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

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