Kezdőoldal » Számítástechnika » Programozás » Boolean mező hozzátűzése a...

Boolean mező hozzátűzése a queryhez ha egy érték két táblában is szerepel?

Figyelt kérdés
Van két táblám egy SQL adatbázisban, az egyik a felhasználók adatait, a másik a tiltott felhasználók id jét tartalmazza. Azt szeretném, hogy a queryben szereplejen egy boolean, ami megmondja, hogy az adott felhasználó idje szerepel-e a ban táblában.

2018. márc. 15. 10:46
 1/10 anonim ***** válasza:
És miért nem a felhasználó táblába teszel egy mezőt, hogy tiltott-e a user vagy sem?
2018. márc. 15. 12:58
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:
Nagyon rosszul gondolkozol. Az egyik legfontosabb aranyszabály egy adatbázis kialakításánál az, hogy a redundancia legyen a minimumon. Eltárolod egy táblában, hogy kik vannak tiltva, majd ezután még a user táblába is külön felveszed, hogy kik vannak tiltva. Ez csak annyit fog jelenteni, hogy ha módosítod az adatokat, akkor két táblán is frissíteni kell az adatokat, mert egynél több helyen tárolod el ugyanazt az információt. Ne. Hacsak nem tárolsz el valami részletes információt az emberek tiltásával kapcsolatban, akkor a fő user táblán legyen egy bool mező, hogy tiltva van-e, vagy sem, és jónapot.
2018. márc. 15. 13:32
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:
Ha meg eltárolsz további információkat is (mikor lett tiltva, milyen indoklással, stb stb), akkor meg tárold el csak a külön táblában. De mindkettőt egyszerre ne.
2018. márc. 15. 13:33
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:
100%

Select

Usr.*,

Convert(bit,(Case when ban.usrid is not null then 1 else 0 end))as bannolt

From Usr

Left join Ban on Ban.usrid = Usr.usrid

2018. márc. 15. 15:21
Hasznos számodra ez a válasz?
 5/10 A kérdező kommentje:
#1-nek: mert nem egy, hanem egyből két mezőt kell felvennem, ami javarészt üres lesz, mert a tiltás végét, és az indoklást is tárolni akarom.
2018. márc. 17. 08:37
 6/10 A kérdező kommentje:
#2-nek a user táblában nem tárolom el még egyszer a tiltást, hanem minden külön a ban táblában van.
2018. márc. 17. 08:38
 7/10 A kérdező kommentje:
3#-nak a user csak a felhasználói adatokat tárolja, a ban pedig csak a bannolt felhasználó ID-jét, illetve a tiltás végéig hátralevő időt, és a ban okát tárolja.
2018. márc. 17. 08:39
 8/10 A kérdező kommentje:
#4-nek, köszönöm szépen, ezt nem tudtam összerakni a fenéért se, nem vagyok otthon sql-ben még.
2018. márc. 17. 08:40
 9/10 A kérdező kommentje:

Végül ezzel meg tudtam mondani ,hogy az adott érték szerepel-e a másik oszlopban:


SELECT `user`.*, (CASE WHEN `ban`.userid IS NOT NULL THEN 1 ELSE 0 END) AS bannolt FROM `user` LEFT JOIN `ban` ON `ban`.`userid` = `user`.`id`

2018. márc. 18. 10:49
 10/10 anonim ***** válasza:
Ha a ban-ban szerepel határidő, azt is tedd bele a feltételbe ( remelem nem a tiltás végéig hátralevő idő van benne szó szerint, mert azt mindig updatelni kellene, illetve ebben az esetben nem feltétlen van 1-1 kapcsolat, mert egy user többször is kaphat bannt, szóval outer apply lenne a jó megoldás, de azt lusta vagyok most leírni, megerősítésig)
2018. márc. 18. 13:09
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!