Forum » Programiranje » T-SQL preprost querry pa ne znam
T-SQL preprost querry pa ne znam
nurmaln ::
Živjo
Zanima me kako bi napisal SELECT izjavo ki bi mi vrnila '1' in '2' v enem stolpcu
Če napišem
SELECT 1,2
dobim
|---|---|
| 1 | 2 |
|---|---|
rad pa bi dobil
|---|
| 1 |
|---|
| 2 |
|---|
sej mi je jasno da mora bit čist simpl sam če ne vem pač ne vem
Zanima me kako bi napisal SELECT izjavo ki bi mi vrnila '1' in '2' v enem stolpcu
Če napišem
SELECT 1,2
dobim
|---|---|
| 1 | 2 |
|---|---|
rad pa bi dobil
|---|
| 1 |
|---|
| 2 |
|---|
sej mi je jasno da mora bit čist simpl sam če ne vem pač ne vem
- spremenilo: nurmaln ()
Sergio ::
SELECT 1
UNION
SELECT 2
UNION
SELECT 2
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
Sergio ::
/me se prikloni. :)
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
Sergio ::
Edino to bi te še opozoril:
SELECT 1
UNION
SELECT 1
ti vrne samo eno vrstico. Ker stvar vrne množico različnih relacij.
SELECT 1
UNION
SELECT 1
ti vrne samo eno vrstico. Ker stvar vrne množico različnih relacij.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
Sergio ::
Vidiš, tega pa jaz nisem vedel ;-).
Vsak dan nekaj novega, hvala.
Vsak dan nekaj novega, hvala.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
nurmaln ::
k vidim da obvladate zadeve bi pa še nekej prašu
imam dve tabeli
v prvi je šifra artikla in količina prodaje
v drugi je šifra artikla in količina nabave
rabim novo tabelo, ki bo vključevala vse tri stolpce
kako?
imam dve tabeli
v prvi je šifra artikla in količina prodaje
v drugi je šifra artikla in količina nabave
rabim novo tabelo, ki bo vključevala vse tri stolpce
kako?
Zgodovina sprememb…
- spremenilo: nurmaln ()
pyrexia77 ::
create table new_table as
select tab1.sifra_art, tab1.kol_prod, tab2.kol_nab
from table1 tab1, table2 tab2
where tab1.sifra_art = tab2.sifra_art;
select tab1.sifra_art, tab1.kol_prod, tab2.kol_nab
from table1 tab1, table2 tab2
where tab1.sifra_art = tab2.sifra_art;
nurmaln ::
SELECT
p.opis, p.Šifra, p.prodaja, n.nabava
FROM
(
SELECT 'Monitor 17' AS Opis, '17' AS Šifra, '3' AS prodaja, 0 AS nabava
UNION
SELECT 'Monitor 19' AS Opis, '19' AS Šifra, '7' AS prodaja, 0 AS nabava
) AS p
,
(
SELECT 'Monitor 19' AS Opis, '19' AS Šifra, 0 AS prodaja, '5' AS nabava
) AS n
WHERE p.Šifra = n.Šifra
Od tegale bi jaz pričakoval da mi bo vrnilo dve vrstici.
V prvi 'Monitor 17' s šifro '17', prodajo 3 in nabavo 0
V drugi pa Monitor 19 s šifro 19, prodajo 7 in nabavo 5
Vrne mi samo drugo vrstico. Kako naj dobim obe?
edit.
LEFT JOIN mi ne pride v upoštev ker ne vem v kateri tabeli bo več vrstic.
p.opis, p.Šifra, p.prodaja, n.nabava
FROM
(
SELECT 'Monitor 17' AS Opis, '17' AS Šifra, '3' AS prodaja, 0 AS nabava
UNION
SELECT 'Monitor 19' AS Opis, '19' AS Šifra, '7' AS prodaja, 0 AS nabava
) AS p
,
(
SELECT 'Monitor 19' AS Opis, '19' AS Šifra, 0 AS prodaja, '5' AS nabava
) AS n
WHERE p.Šifra = n.Šifra
Od tegale bi jaz pričakoval da mi bo vrnilo dve vrstici.
V prvi 'Monitor 17' s šifro '17', prodajo 3 in nabavo 0
V drugi pa Monitor 19 s šifro 19, prodajo 7 in nabavo 5
Vrne mi samo drugo vrstico. Kako naj dobim obe?
edit.
LEFT JOIN mi ne pride v upoštev ker ne vem v kateri tabeli bo več vrstic.
Zgodovina sprememb…
- spremenilo: nurmaln ()
sverde21 ::
OK, se bom še jst tle mal vrinu , imam tabelo kjer imam banane uporabnike ter zraven čas bana...
In zdej če je polje ban_for_sec 0, to pomeni, da je uporabnik banan za nedoločen čas. Rabil bi query, ki bi mi vrnil največjo vrednost v polju ban_for_sec za nekega uporabnika oziroma, če je vrednost polja ban_for_sec 0, bi moral vrniti 0. Torej v zgornjem primeru bi moralo vrniti 0, če pa nebi bilo drugega vnosa, pa bi moral vrniti 20.
id | uid | ban_for_sec |
1 | 2 | 10 |
2 | 2 | 0 |
3 | 2 | 20 |
In zdej če je polje ban_for_sec 0, to pomeni, da je uporabnik banan za nedoločen čas. Rabil bi query, ki bi mi vrnil največjo vrednost v polju ban_for_sec za nekega uporabnika oziroma, če je vrednost polja ban_for_sec 0, bi moral vrniti 0. Torej v zgornjem primeru bi moralo vrniti 0, če pa nebi bilo drugega vnosa, pa bi moral vrniti 20.
<?php echo `w`; ?>
space ::
MAX uporabi.
SELECT MAX(ban_for_sec) As "BAN"
FROM Tabela;
In ti vrne polje z najvecjo vrednostjo.
lp,
s
SELECT MAX(ban_for_sec) As "BAN"
FROM Tabela;
In ti vrne polje z najvecjo vrednostjo.
lp,
s
Onen i-Estel Edain, u-chebin estel anim.
borchi ::
@sverde: če je uid oznaka za uporabnika lahko narediš takole:
select ban_for_sec from (
select uid, ban_for_sec, ban_for_sec_calc = case when (ban_for_sec = 0) then (select max(ban_for_sec) + 1 from tabela) else (ban_for_sec) end
from tabela) tb1
where uid = 2
group by uid, ban
having max(ban_for_sec_calc) = ban_for_sec + max(ban_for_sec_calc)
sej vem, da je štorasto in grdo ko smrt... sam ura je že pozna pa še spakirat je treba...
select ban_for_sec from (
select uid, ban_for_sec, ban_for_sec_calc = case when (ban_for_sec = 0) then (select max(ban_for_sec) + 1 from tabela) else (ban_for_sec) end
from tabela) tb1
where uid = 2
group by uid, ban
having max(ban_for_sec_calc) = ban_for_sec + max(ban_for_sec_calc)
sej vem, da je štorasto in grdo ko smrt... sam ura je že pozna pa še spakirat je treba...
l'jga
Zgodovina sprememb…
- spremenil: borchi ()
borchi ::
tisto zorej je seveda narobe...
select min(ban_for_sec) as ban from
(
select id, uid, ban_for_sec
from tabela
where uid = 2
and ban_for_sec = case when (ban_for_sec = 0) then 0 else (select max(ban_for_sec) from tabela) end
) t
select min(ban_for_sec) as ban from
(
select id, uid, ban_for_sec
from tabela
where uid = 2
and ban_for_sec = case when (ban_for_sec = 0) then 0 else (select max(ban_for_sec) from tabela) end
) t
l'jga
Zgodovina sprememb…
- spremenil: borchi ()
sverde21 ::
Mogoče bo celo delal :) sicr pa moram še malce predelat query, ker imam še ene 2 JOIN-a zravn
Hvala!
Hvala!
<?php echo `w`; ?>
Zgodovina sprememb…
- spremenil: sverde21 ()
borchi ::
> (select max(ban_for_sec) from tabela)
mora bit seveda
(select max(ban_for_sec) from tabela where uid = 2)
zdej pa dost od mene, sem že dokazal kako štorast sem pri sql-u.
mora bit seveda
(select max(ban_for_sec) from tabela where uid = 2)
zdej pa dost od mene, sem že dokazal kako štorast sem pri sql-u.
l'jga
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | SQL vprasanje (strani: 1 2 )Oddelek: Programiranje | 8345 (5024) | BivšiUser2 |
» | [SQL] Unikatni izpisiOddelek: Programiranje | 2219 (1606) | 111111111111 |
» | mysql if stavekOddelek: Programiranje | 1256 (870) | MrStein |
» | SQL vprašanjeOddelek: Izdelava spletišč | 2666 (2229) | jerneju |
» | MySQL join problemOddelek: Programiranje | 1539 (1437) | Poldi112 |