SQL dotaz.Vyber jednoho slova ze slopce
- parti
- Člen | 117
Ahoj prosim neporadili by jste mi jak napsat dotaz do DB pri kterem si vyberu
ne vsechno, co se nachazi ve sloupecku ale jenom jedno slovo z toho
sloupecku.
Dotaz mam napsany takto
public function findHostnameRegion($name) {
return $this->database->table('os')
->where('name',$name);
}
a pak v sablone to mam takto
Z toho vypisu dostanu cely zaznam ktery se nachazi v tom sloupecku.
<td>{foreach $rows as $item} <p>{$item->cmdb_category}</p>{/foreach}</td>
pro lepsi predstavu tohle jsou moje slopce s daty[jedne radek jeden sloupecek] a z nich bych portreboval vytahnout z prvniho skoupce Linux,z dalsi Windows a z dalsi ESX.
Virtual Server VMWare **Linux** / Server / Hardware
Virtual Server VMWare **Linux** / Server / Hardware
VMWare **Windows** / Server / Hardware
VMware **ESX** server/ Server / Hardware
Nevim jeslti ma nette nejakou funkci kterou by se dalo v tom dotazu rict co mi ma vrati[Linux,Winidovs,ESX]. Pak druha moznost je to napsat cez queryArgs a tam v nem select.
Dekuji za radu.
Editoval parti (23. 2. 2017 18:34)
- jik
- Člen | 149
V postgresu lze použít zápis:
SELECT id,name FROM page;
id | name
----+------------------------
2 | Pospolné zřízení
3 | Kapitalistické zřízení
1 | Úvod
SELECT id,name FROM page WHERE name~'vod';
id | name
----+------
1 | Úvod
Takto lze vybrat řádky, které vyhovují regulárnímu výrazu. Potom výběr položek lze provést takto:
SELECT id, name, substring (name from 'zřízení') AS vyber FROM page WHERE name~'zřízení';
id | name | vyber
----+------------------------+---------
2 | Pospolné zřízení | zřízení
3 | Kapitalistické zřízení | zřízení
Do NotORM bych to (na ostro a bez záruky) zkusil přeložit takto:
$this->database->table('page')
->select("id, name, substring (name from 'zřízení') AS vyber")
->where("name~'zřízení'");
Pro MariaDB/MySQL existuje také něco takového, viz https://mariadb.com/…ariadb/like/
Editoval jik (23. 2. 2017 21:22)
- parti
- Člen | 117
Uzivatel ma jeden input kde zada nejakou hodnotu napriklad jmeno servru napriklad server1. Podle ty hodnoty se mu vypise vse co se nachazi v tomhle radku os[os-je sloupecek] v DB
Virtual Server VMWare **Linux** / Server / Hardware
Potrebuji misto celeho vypisu vypsat jenom to slovo Linux.
Samozrejme pokudu uzivatel zada v inputu napriklad server2 tak se mu v radku
os[os-slopec] v DB zobrazi vypis
a nasledne i v sablone kde se mu ten vypis posle.
VMWare **Windows** / Server / Hardware
a z toho vystupu potrebuji zase vypsat ne vsechno ale jenom to slovo Windows.
Dotaz do db jsem mel postaveny takhel
public function findHostnameRegion($name) {
return $this->database->table('os')
->where('name',$name);
}
to mi vrati vse co se nachazi v tom radku celi string ja bych potreboval
vratiti jenom to jedno slovo ze stringu.
Dekuji
- Mysteria
- Člen | 797
Tak můžeš si normálně přidat nějaký vlastní sloupec pomocí
->select('... AS filteredOS')
, ale jestli dokážeš tohle
nějak udělat přímo v MySQL pomocí jeho funkcí, tak to nevím.
- parti
- Člen | 117
Reseni jak jsem to napsal a funguje to
public function findHostnameOs($name) {
return $this->database->query("SELECT category,
CASE
WHEN category LIKE '%Linux%' THEN 'Linux'
WHEN category LIKE '%Windows%' THEN 'Windows'
WHEN category LIKE '%X%' THEN 'x'
WHEN category LIKE '%H%' THEN 'H'
WHEN category LIKE '%E%' THEN 'E'
ELSE ''
END AS OS
FROM server
WHERE name=?", $name);
}
Editoval parti (24. 2. 2017 12:39)