NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Jakub Chuděj:4.5.2017 10:56

Zdavím,
tvořím web, kde je potřeba do jednoho sloupečku dostat více hodnot.

Mám tabulku "zařízení", ve které mám sloupeček "uživatelé", aby mohlo 1 zařízení používat (ovládat) více uživatelů, tak musí být ve sloupečku "uživatelé" více hodnot.

Problém nastává, když v html selectu vybírám uživatelům k jakému zařízení mají přístup.
Když se 2 uživatelé budou jmenovat podobně, např "test" a "testování", tak mi select
SELECT * FROM zařízení WHERE uživatelé LIKE '%jmeno%' vybere všechny zařízení, kde bude ve sloupečku "uživatelé" jméno s kořenem "test", což je samozřejme nežádoucí.

Na JPW jsem četl, že v tomto případě lze spárovat tabulky a obsah jedné kolonky ve sloupečku se bude rovnat jednomu řádku v jiné tabulce.

Bohužel nevím jak na to a jestli by to případně fungovalo tak, jak mělo.
Výsledek by měl být takový, že si zařízení přidá uživatel na svém profilu, tudíž se do tabulky "zařízení" a sloupečku "uživatelé" přidá jeho username(jedinečné) a potom bude moci zařízení zobrazit a ovládat.

Díky moc za rady.

Odpovědět
4.5.2017 10:56
Kdo chce, hledá způsob, kdo nechce, hledá důvod.
Avatar
Odpovídá na Jakub Chuděj
Michal Štěpánek:4.5.2017 12:16

Asi bych to řešil "další" tabulkou (vazební - s vazbou M:M) kam by sis ukládal IDčka zařízení a IDčka uživatelů. Tím pádem by mohlo být přiřazeno uživatelů k zařízení kolik budeš chtít a zároveň jeden uživatel může být "přiřazen" k více zařízením.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
4.5.2017 12:16
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Jakub Chuděj
Michal Haňáček:4.5.2017 12:38

Přesně jak píše kolega. Navíc select který jsi zde popsal se ti dříve nebo později vymstí minimálně tím, že bude neskutečně pomalý. Raději ani nemluvě o tom že jména uživatelů - tedy uživatelská data jsou na vazbení velmi, velmi nevhodná.

Nahoru Odpovědět
4.5.2017 12:38
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Jakub Chuděj:4.5.2017 12:42

Děkuji za pomoc.

Jak jinak by jsi Selectoval?

Samozřejmě si budu tahat jen věci, se kterými pracuji a pracovat budu s ID uživatelů, nikoliv se jmény. :)

Nahoru Odpovědět
4.5.2017 12:42
Kdo chce, hledá způsob, kdo nechce, hledá důvod.
Avatar
Odpovídá na Jakub Chuděj
Michal Štěpánek:4.5.2017 14:11

Selectovat se dá třeba takhle

SELECT (jmeno + ' ' + prijmeni) AS uzivatel FROM Users WHERE UserId IN(SELECT UserId FROM Zarizeni WHERE ZarizeniId = @parametr)
Nahoru Odpovědět
4.5.2017 14:11
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Michal Haňáček:4.5.2017 14:28

To už vypadá daleko líp než ten where přes LIKE, jen mám za to že klauzule IN nepoužívá indexy (minimálně v některých RDBMS - např. Firebird), tak že ani toto by nemuselo být úplně optimální ...

Nahoru Odpovědět
4.5.2017 14:28
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Jakub Chuděj:4.5.2017 14:35

Kouknu na to, ale nejspíš tak rozsáhlý select potřeba nebude.

Na první stránce, kde si uživatel vybírá zařízení, je select kvůli dropdown selectu
"SELECT devid, name FROM vazbadev WHERE userid= @id"

A když už jsme u rychlosti. Na další stránce vyčítám o zařízení všechna infa kromě "id" a "vlastník" (cca 20 proměnných). Tak jestli je rychlejší vybrat vše a poté jen nepoužít tyto 2 proměnné, nebo hezky do selectu vypsat jen to, co použiji.

Nahoru Odpovědět
4.5.2017 14:35
Kdo chce, hledá způsob, kdo nechce, hledá důvod.
Avatar
Odpovídá na Jakub Chuděj
Michal Štěpánek:4.5.2017 23:25

Na první stránce, kde si uživatel vybírá zařízení, je select kvůli dropdown selectu

Ten můj příklad byl pro to, abys vybral, kteří uživatelé jsou přiřazeni k určitému zařízení

Editováno 4.5.2017 23:26
Nahoru Odpovědět
4.5.2017 23:25
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.