Kom-pa-TI-bilitet
[php] kan man kolla upp text i en kolumm? mysql
Vet ej riktigt hur jag ska koda detta
Men jag har en sida där man kan registrera sig för att delta i en tävling.
Tabellen ser ut
id
namn
information
tid
deltagare
----------------------
Ett exempel
1
Jaga ankor
Du ska under 50 sekunder jaga 3040 st ankor
2071 - 12 - 24 kl 13:00
janne hulken spiderman batman nisse gunnar
----------------------
På deltagarens egna sida så vill jag att det ska finnas en länk som antingen raderar eller lägger till sitt namn
Så om spiderman trycker på avanmäl så ska spiderman försvinna från "deltagare" men ifall spiderman inte finns i "deltagare" så ska det stå anmäl istället. Och när den klickas så ska spiderman addas till "deltagare"
Går detta eller behöver jag skapa en ny tabell för varje tävling som håller deltagare?
Exempel
--------------------
Tabell Jaga ankor_deltagare
id
namn
Hoppas ni fattar
Du har antagligen redan en tabell som representerar användare (t ex spiderman). Den vanligaste lösningen på ditt problem är att skapa en extra tabell som binder samman användare med en tävling. I sin enklaste form ser den ut så här:
Tävlingsdeltagare
tävlingsid
användarid
constraints
composite primary key: tävlingsid+användarid
foreign key: tävlingsid
foreign key: användarid
En rad i tabellen kopplar samman en användare med en tävling. Med en composite key över tävlingsid + användarid riskerar man inte att skapa dubletter, och genom foreign key-relationen med de båda tabellerna som kopplas samman försäkrar man sig om att relationen existerar.
Att ha det uppdelat på detta vis ger många fördelar när det kommer till sökbarhet. Det är exempelvis en baggis att kolla ifall en viss användare är anmäld till en viss tävling:
select
count(*)
from
tävlingsdeltagare td
where
td.användarid = ?
and
td.tävlingsid = ?
Vilka användare (med namn) som är anmälda till en viss tävling:
select
a.användarid
a.användarnamn
from
tävlingar t
inner join tävlingsdeltagare td on td.tävlingsid = t.tävlingsid
inner join användare a on a.användarid = td.användarid
where
t.tävlingsid = ?
Vilka tävlingar en användare har anmält sig till:
select
t.tävlingsid
t.tävlingsnamn
from
tävlingar t
inner join tävlingsdeltagare td on td.tävlingsid = t.tävlingsid
inner join användare a on a.användarid = td.användarid
where
a.användarid = ?
Du har antagligen redan en tabell som representerar användare (t ex spiderman). Den vanligaste lösningen på ditt problem är att skapa en extra tabell som binder samman användare med en tävling. I sin enklaste form ser den ut så här:
Tävlingsdeltagare
tävlingsid
användarid
constraints
composite primary key: tävlingsid+användarid
foreign key: tävlingsid
foreign key: användarid
En rad i tabellen kopplar samman en användare med en tävling. Med en composite key över tävlingsid + användarid riskerar man inte att skapa dubletter, och genom foreign key-relationen med de båda tabellerna som kopplas samman försäkrar man sig om att relationen existerar.
Att ha det uppdelat på detta vis ger många fördelar när det kommer till sökbarhet. Det är exempelvis en baggis att kolla ifall en viss användare är anmäld till en viss tävling:
select
count(*)
from
tävlingsdeltagare td
where
td.användarid = ?
and
td.tävlingsid = ?
Vilka användare (med namn) som är anmälda till en viss tävling:
select
a.användarid
a.användarnamn
from
tävlingar t
inner join tävlingsdeltagare td on td.tävlingsid = t.tävlingsid
inner join användare a on a.användarid = td.användarid
where
t.tävlingsid = ?
Vilka tävlingar en användare har anmält sig till:
select
t.tävlingsid
t.tävlingsnamn
from
tävlingar t
inner join tävlingsdeltagare td on td.tävlingsid = t.tävlingsid
inner join användare a on a.användarid = td.användarid
where
a.användarid = ?
Tack för den tid du la ner! Inte alls dumt! Tackar
- Igår Nytt vetenskapligt genombrott kan lösa OLED-inbränning 40
- Igår Microsoft vill göra handhållen Xbox 40
- 26 / 3 Microsoft patenterar teknik för bättre ray tracing-prestanda 27
- 26 / 3 Intel Battlemage med ordentlig prestandaökning dyker upp i databas 21
- 25 / 3 Gömda strömkontakter med Asus och Corsair 33
- Idag Så byter du till gamla Notepad i Windows 11 1
- Idag Microsoft Copilot kan snart köras direkt på datorn 7
- Igår Stort steg för Windows på ARM: Google släpper optimerat Chrome 23
- Igår Xbox-chef är öppen för fler spelbutiker på konsol 21
- Igår DirectSR – så fungerar Windows inbyggda uppskalning för spel 15
- Igår Veckans fråga: Hur gammalt är ditt Steam-konto? 147
- Igår Bluffkampanj sprider sig genom Googles AI-sökfunktion 11
- 26 / 3 82 studenter avstängda för AI-fusk – Uppsala strängast 55
- 26 / 3 Speldistributörer kan lämna Xbox: "Döende i Europa" 101
- 26 / 3 Datorbyggarguide: Hur man installerar en processor i AMD:s sockel AM5 4
- Nybyggd dator, kan inte installera Windows 11..45
- Grafikprestanda i Horizon Forbidden West89
- Köper från Aliexpress66
- ShikakuOfThe.Day - Dagliga shikaku pussel2188
- Nybygge startar om istället för att stänga av, och andra konstigheter3
- Så byter du till gamla Notepad i Windows 111
- Nytt vetenskapligt genombrott kan lösa OLED-inbränning40
- Vad lyssnar du på just nu?13739
- söker rymd byggar spel9
- Mekaniska tangentbord – Allmän diskussion6920
- Säljes Pixel 7 Pro 128GB
- Säljes Atlantis Mini 4k, X2H Mini, GPX, VGN F1 Moba
- Säljes Hyperdrive SLAB 7-in-1 USB-C Hub
- Köpes AM4 Moderkort till 5600x sökes.
- Säljes BenQ XL2411 - 144 Hz
- Säljes Massa spelkoder till salu
- Säljes Seagate Storage Expansion Card for Xbox Series X|S - 1TB
- Säljes MSI RX 6600 XT, Ryzen 5 3600X, Kingston Fury 32GB 6000C36
- Skänkes IKEA Markus
- Köpes Grafikkort sökes, RX 6800 XT / RX 6900 XT / RTX 3080
- Så byter du till gamla Notepad i Windows 111
- Microsoft Copilot kan snart köras direkt på datorn7
- Stort steg för Windows på ARM: Google släpper optimerat Chrome23
- Nytt vetenskapligt genombrott kan lösa OLED-inbränning40
- Xbox-chef är öppen för fler spelbutiker på konsol21
- Veckans fråga: Hur gammalt är ditt Steam-konto?147
- Bluffkampanj sprider sig genom Googles AI-sökfunktion11
- DirectSR – så fungerar Windows inbyggda uppskalning för spel15
- Microsoft vill göra handhållen Xbox40
- 82 studenter avstängda för AI-fusk – Uppsala strängast55
Externa nyheter
Spelnyheter från FZ
- Embracer säljer Gearbox till Take-Two för 4,9 miljarder idag
- Playstation utökar Game Help-funktionen med community-skapad vägledning idag
- Påstådda bilder på en vit Xbox Series X utan skivläsare har dykt upp idag
- No Man's Sky låter dig bygga om dina rymdskepp igår
- Flera Mass Effect-veteraner jobbar på Mass Effect 5 igår