Jak wyświetlić ilość

0
mysql> select count(ido) from oceny where imie is not null;

wypsuje mi 1021 czemu? dałem warunek imie jest != od NULL więc powinno nie zliczać tych ostatnich wierszy
oceny2.jpg
a mam jeszcze pytanie, jeśli wpisze komende

insert into oceny values(1018,'','','',0,0);

to okazuje się że kolejną wartościa klucza jest 1022a nie 1018
czemu tak się dzieje? czemu nie dopisało kolejnego wolnego klucza tylko randomowy? jak zrobić aby dopisało kolejny wolny

0

Wydaje mi się, że tam powinna być wartość null a ty masz wartość ''

0
 select count(ido) from oceny where not imie='';

Hihhihiih racja, teraz działa

0

Staraj się nie używać "NOT" na poczatku nauki SQL.

0

Ale jeszcze jest podpunkt b tego pytania, czekający na odpowiedz :]]]

0
bartek164 napisał(a):

a mam jeszcze pytanie, jeśli wpisze komende

insert into oceny values(1018,'','','',0,0);

to okazuje się że kolejną wartościa klucza jest 1022a nie 1018
czemu tak się dzieje? czemu nie dopisało kolejnego wolnego klucza tylko randomowy? jak zrobić aby dopisało kolejny wolny

bo pole jest autoincrement i olewa to co tam próbujesz wstawić. Wstawia po prostu kolejną wartość z numeratora

0

A przepraszam, żle napsiałem
chodzziło mi o to że wpisałem takie coś

INSERT INTO oceny VALUES(NULL,'','','',0,0);

i nie dostałem kolejnego numeru tylko trzeci po nim

0

"jakiego numeratora? następną wartośćią jest 1018, bo ostatni rekord to 1017, ale on wpisuje 1022"
aby na pewno? możesz sobie sam odpowiedzieć szukając największej wartości z ido lub sprawdzając, czy rzeczywiście nie ma rekordu o ido = 1018.
zresztą masz 1021 rekordów z ido, skoro każdy ma id i są numerowane po kolei, to następny automatycznie wygenerowany klucz będzie równy co najmniej 1022.
ps. pozdrawiam krakowski UP (? :P)

0
bartek164 napisał(a):

i nie dostałem kolejnego numeru tylko trzeci po nim

i oczywiście nie czytałeś nic z linka, który Ci dałem a jak czytałeś to nie zrozumiałeś. Numerator (sekwencja, sequence) to takie magiczne coś co się tworzy automatycznie, jest przypięte do pola autoinc, startuje od 1 i zwiększa się za każdym razem jak wstawiasz rekord do tabeli. Nie ma znaczenia czy insert się powiódł, czy zatwierdziłeś transakcję, czy potem ten rekord usunąłeś. Baza widzi polecenie INSERT... i pobiera wartość numeratora, zwiększa go o 1 i próbuje wstawić rekord. Dlatego możesz wstawić rekord z id=1, potem dwa razy możesz próbować dodać kolejny ale nie wyjdzie (np. wartość null dla pola not null) i przy czwartej próbie wstawienia dostaniesz id=4 a nie id=2 bo każda PRÓBA wstawienia rekordu powoduje zwiększenie numeratora o 1.

Można oczywiście ustawić ręcznie wartość bieżącą numeratora, w niektórych bazach można mu ustawić krok - np. kolejna wartość nie będzie się zwiększała o 1 a o 10 i inne jeszcze manewry na nim wykonać ale to są dodatkowe rzeczy, które trzeba samemu zrobić - domyślnie działa to tak jak opisałem wyżej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0