MySQL/PHP? Segítség kéne
felhasznalok: user_id|nev|... (pl 0-Jani,1-Peti)
szolgaltatasok: szolg_id|nev (pl 0-net,1-tv,2-telo)
+felhasznalo_szolgaltatasai: user_id|szolg_id (pl Janinak internet és tv: 0-0,0-1)
Ti kapcsolótábla nevébe szoktatok valami jelölést tenni, pl kapcs_felhasznalo_szolgaltatas? (hogy áttekinthetőbb legyen)
> Köszi szépen, megoldottam úgy még egy táblával :)
Jaj-jaj! Azt, hogy mi tartozik egy táblába, és mi kerül külön táblába, azt azért sokkal józanabb érvek határozzák meg. Lásd: [link]
> Esetleg még ha abban tudnátok segíteni, hogy van a felhasználó, neki van 1-es szolgáltatása (pl. az internet) .. és ha azt szeretném, hogy a felhasználónak legyen 1-es és mondjuk 2-es szolgáltatása is (internet,telefon) .. akkor azt hogy a legkivitelezhetőbb megoldani? Felhasználó táblában a Szolgáltatás mező TEXT-re van beállítva
Ez így nem az igazi. Pl. mi van, ha van egy szolgáltatás, ami éppenséggel egyetlen felhasználóhoz sem tartozik. Azt pl. hogy listázod? Hol tárolod mondjuk a nevét, az egységárat, stb…? És mi van, ha egy szolgáltatás neve megváltozik? Pl. az eddigi egyetlen „internet” szolgáltatás kettéválik vonalas és mobil internetre? Végigmész az akár több millió rekordon, és átírod mindenhol?
Valahogy így kellene felépíteni a dolgot.
CREATE TABLE user (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_hungarian_ci NOT NULL,
stb. stb…
PRIMARY KEY (id)
)
CREATE TABLE service (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_hungarian_ci NOT NULL,
stb., stb…
PRIMARY KEY (id)
)
CREATE TABLE use_service (
user_id INT NOT NULL,
service_id INT NOT NULL,
start_date DATE,
stb., stb…
PRIMARY KEY(user_id, service_id)
)
Aztán szépen össze lehet kapcsolni a táblákat mondjuk így:
SELECT
user.id AS userid,
user.name AS username,
service.id AS serviceid,
service.name AS servicename,
use_service.start_date AS startdate
FROM use_service, user, service WHERE (use_service.user_id = user.id) AND (use_service.service_id = service.id)
Vagy:
SELECT …
FROM use_service
INNER JOIN user ON user.id = use_service.user_id
INNER JOIN service ON service.id = use_service.service_id
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!