Topic: SQL Query

Sveiki,

turiu toki selecta

SELECT numbers FROM lenta WHERE ...
Uzklausa ismeta:

1
2
3
4
6
7
8
10

Kaip padaryti kad uzklausa grazintu jog nera skaiciaus 5 ir nera skaiciaus 9 .. :

1
2
3
4
Sis numeris laisvas
6
7
8
Sis numeris laisvas
10

Imanoma kazkaip tai realizuoti ?
Irasai saugomi int tipo lauke, naudojama mysql versija: 5.0.45

Is anksto dekoju !

2 (edited by Ramex 2009-05-05 13:02:19)

Re: SQL Query

tikrai nemanau, nes mysql tikrai nežinos, kaip šiuo atveju turi būti.
protingiausias variantas manau būtų duomenis saugoti kaipnors taip:

+---+
| 1 |
+---+
| 2 |
+---+
| 3 |
+---+
| 4 |
+---+
| 0 |
+---+
| 6 |
+---+
| 7 |
+---+
| 8 |
+---+
| 0 |
+---+

ir tada tikrini, jei 0, tuomet išvedi, kad skaičius laisvas.

Su sąlyga, kad šūdo nebus...

Re: SQL Query

O kaip nurodyti MySQLui kad jeigu nera skaiciaus tarp ju turetu isvesti 0 ?
pvz toks output'as:

1
2
5
6
7
9
Siuo atveju vietoje 3,4,8 turetu buti 0.

Dar karta aciu uz bet kokias idejas.

4 (edited by Ramex 2009-05-05 13:55:23)

Re: SQL Query

niekaip, pats turi rašyti kodą, kuris tai atliks.
mysql'as juk nežino, kad toj ar kitoj vietoj "nėra" skaičiaus, t.y. jis nežino, kad ten turi būti skaičius. jis tik "žino" tuos skaičius, kurie yra duombazėj.
šiaip gali tokį patį tikrinimą daryti ir su php, tada duombazėj būtų saugomi tik užimti skaičiai

Su sąlyga, kad šūdo nebus...

Re: SQL Query

Jei normaliau aprasytum ka darai/nori padaryti, tai gal ir koki protinga pasiulyma duotumem, nes dabar norimas padaryti variantas atrodo keistai. Be to tokia uzduoti lengvai galima isspresti pasitelkus programavimo kalba su kuria apdoroji duomenis.

Re: SQL Query

Situacija yra tokia:
Yra raktu numeriai, bet tie raktai laikas nuo laiko keiciasi.
Taigi yra raktu sunumeravimas, pvz nuo 1 iki 10. Pvz rakto kuris pazymetas numeriu 3 statusas pasikeite i pvz 2 tai kaip ir jis mums yra nebereikalingas ...

As pasirasiau selekta kuris priskiria laisvaji numeri naujai atisiradusiam raktui, nes senojo rakto statusas pasikeite ir jis mums neaktualus.

Selektas atrodo taip:

SELECT MIN(p.`number` + 1) as new_no
FROM objects p
LEFT OUTER JOIN objects c
ON (p.`number` + 1 = c.`number`  AND c.`location` = '1' AND (c.`status` = 1 OR c.`status` = 5 OR c.`status` = 9))
WHERE (p.`status` = 1 OR p.`status` = 5 OR p.`status` = 9)
AND p.`location` = '1'
AND c.`number` IS NULL

Su siuo selektu as pasiselektinu pirmaji laisvaji numeri, taciau kaip man gauti visa sarasa raktu su visais laisvais numeriukais ?

Is anksto dekoju.

Re: SQL Query

parodyk lentelės struktūrą

Su sąlyga, kad šūdo nebus...