24godzina
18.12.2015, 20:21:44
Chciałabym aby database zliczył mi ile w danym mieście mieszka osób, robię to tak :
SELECT miasto,COUNT(miasto)
FROM klienci
GROUP BY miasto;
Cały czas jest jakiś problem.
Również próbowałam zliczyć ile jest rodzajów książek
w sensie wersja papierowa, wersja elektroniczna
SELECT COUNT(*)
FROM ksiazki
GROUP BY Forma;
Nagłówek w bazie to wlaśnie forma
nospor
18.12.2015, 20:33:56
Nie: SELECT miasto,COUNT(miasto)
a: SELECT miasto,COUNT(idklienta)
A na przyszlosc jak masz problem/blad to pisz na czym on polega a nie kazesz nam wrozyc
24godzina
18.12.2015, 20:38:20
Cały czas pokazuje mi się błąd, ze w 1 linijce coś jest nie tak.
Ja po prostu chciałabym wyróżnić miasta i ilośc osób mieszkających w nich.
File or directory does not exist.
nospor
18.12.2015, 20:46:34
przeciez ten blad nie ma nic wspolnego z zapytaniem.... czytasz w ogole te komunikaty

Pokaz lepiej caly kod, DOKLADNY komunikat bledy, i w skaz wyraznie linie, ktorej dotyczy
ps: przenosze
24godzina
18.12.2015, 22:14:57
Komunikat:
Invalid fiels descriptor
File or direcrory does not exist
File : C...
Table does not exist
Na zołto zaznacza mi linijkę pierwszą .
SELECT Miasto, COUNT(*) AS LiczbaKlientow
FROM "klienci.dbf"
GROUP BY Miasto
Pierwszy raz robię te zapytania, więc prosze o wyrozumiałość.
castagir
19.12.2015, 17:41:33
Trochę dziwnie formułujesz to pytanie.
Nie podajesz żadnych parametrów na podstawie których ma MYSQL wyszukać odpowiednie wpisy i je policzyć.
Ja bym to napisał tak:
SELECT miasto, COUNT(*) FROM `klienci.dbf` WHERE miasto=*nazwaMiasta*;
*nazwaMiasta* - zamiast tego fragmentu wpisujesz sobie nazwę właściwą. Tylko nie ubieraj jej w te gwiazdki
24godzina
20.12.2015, 11:04:19
Nie działa, podkreśla mi błąd w 3 linijce. Nie rozumiem czemu.
Nie podoba mu się TOKEN :*nazwaMiasta*;
Czy jest możliwość, że on nie widzi tych baz? czy jak?
patwoj98
20.12.2015, 11:10:03
To sprawdź czy widzi i będziesz miał odpowiedź. Zrób samo select.
Ja bym przerobił to Twoje zapytanie i zrobił
Kod
SELECT DISTINCT(`miasto`), COUNT(`miasto`) AS mieszkancy FROM `klienci` GROUP BY `miasto`;
ewentualnie istnieje możliwość rozdzielenia tego na dwa zapytania:
Kod
SELECT DISTINCT(`miasto`) FROM `klienci` GROUP BY `miasto`
i teraz dla każdego miasta wyciągać w pętli liczbę mieszkańców.
Wiem, że drugi sposób nieefektywny, ale może zadziała?
24godzina
20.12.2015, 15:12:57
Jak robię zapytania np. wypisz imona zaczynające się na literę A lub C, to mi je wypisuje, gdy juz chciałam z ciągu [a-g] to juz nie.
Czy jest mozliowść, ze program nie czyta jakims cudem polecenia COUNT?
viking
20.12.2015, 15:21:18
Wstaw alias i się przekonaj. COUNT() AS ilosc
castagir
21.12.2015, 09:25:54
Nie wpisuj do SELECT nazwy żadnej kolumny, tylko wpisz po prostu COUNT(*).
Wpisz dokładnie tak jak tutaj podam, tylko zmień nazwę tablicy i miasta:
SELECT
COUNT(*) FROM `uzytkownicy` WHERE miasto
='lublin'
To zapytanie u mnie działało bez problemu, więc i u Ciebie powinno.
Pamiętaj także o odpowiednich nawiasach. Nazwy tablic, kolumn szukanych, edytowanych zawsze wpisuj w
akcentach słabych, a parametry w apostrofach pojedyńczych.
24godzina
21.12.2015, 18:02:59
Tez mi nie działa, czyli musze mieć jakiś problem z programem.
Ponieważ próbuje zrobić takie zapytanie, które zliczy mi miasta i zwróci ich wartośc
SELECT MIASTO ,COUNT(*) AS LICZBAMIAST
FROM klienci.dbf
GROUP BY MIASTO
Nie działa, a chyba nie jest to jakieś skomplikowane zapytanie, zeby nie działało.
Mam wlaśnie bazę o nazwie klienci, w której jest kolumna o nazwie miasto, to chyba powinno działać,a tu jednak nie działa
castagir
22.12.2015, 18:55:54
Niemożliwe, żeby nie działało. Założyłem teraz dokładnie taką samą tablicę z taką kolumną, wpisałem 10 pozycji z kilkoma powtarzającymi się miastami i bez problemu mi je wyszukuję, gdy używam swojego zapytania, które podałem wyżej.
Jeżeli chcesz żeby zliczyło i jednocześnie zwróciło wartości tych wierszy z tabeli, to chyba łatwiej po prostu pobrać wszystkie wiersze zgadzające się z parametrem `miasto`='nazwaMiasta', a dopiero w PHP sobie policzyć ich liczbę za pomocą:
$liczbaMiast = count($wynik);
Zmienna $wynik to oczywiście tablica do której zapisujesz wyniki z zapytania do bazy danych o klientów, którzy mieszkają w danym mieście.
Tak będzie szybciej wykonana cala operacja i łatwiej taki kod konserwować.
A jeżeli chcesz, żeby ci zliczyło wszystkie możliwości z tabeli 'miasto', to najlepiej będzie po prostu:
SELECT `miasto` FROM `klienci`
Potem założyć tablicę, która zapisze wszystkie możliwości do niej, tak aby nie powtarzały się, a na końcu dzięki funkcji count() obliczysz sobie liczbę wszystkich możliwości, które przechowywane są w tejże tablicy.
24godzina
22.12.2015, 19:17:19
Już doszlam. Działa

A teraz mam pytanko jak bym chciała wypisać imiona z ciągu liter od a do g
SELECT imie
FROM klient.db
WHERE imie LIKE'[A-G%]';
Wyświetla mi pusta kolumne, Tylko w wyniku jest sam nagłowek w postaci imię.Czego tutaj brakuje, coś pominełam?
castagir
23.12.2015, 09:48:32
Jeżeli chcesz coś wyszukać na podstawie jakiegoś parametru nie używaj LIKE tylko operatorów.
24godzina
23.12.2015, 18:53:16
Samo w sobie zapytanie bez zaokrąglenia działa:
SELECT AVG(Kwota) AS Srednia , MAX(Kwota) - MIN(Kwota) As Roznica
FROM zamowienia.db
ORDER BY SREDNIA, Roznica
, gdy dodaje ROUND :
SELECT ROUND(AVG(Kwota)) AS Srednia AVG(Kwota) AS Srednia , MAX(Kwota) - MIN(Kwota) As Roznica
FROM zamowienia.db
ORDER BY SREDNIA, Roznica
Wyskakuje:
Kmunikat:
INVALID use of keyword
Token : AVG(Kwota)
LINE NuMBER: 1
W bazie danych zamowienia.db
mam
NR_ID, Data zamowienia, Kwota, Forma_Zakupu, Forma_dostawy, Rodzaj_platnosci
Wszystkie dane są tutaj przykladowe wymyslane.
castagir
24.12.2015, 08:55:40
Wymagasz zbyt wiele od MySQL.
Jeżeli chcesz jeszcze operować na wynikach - tworzyć jakieś średnie, zaokrąglać itp, to lepiej zostaw te wszystkie operacje dla PHP.
PHP jest stworzone do tego aby wykonywać skomplikowane obliczenia i algorytmy. MySQL jest tylko przechowalnią danych.
Po prostu pobierz co jest Tobie potrzebne i resztę wykonaj w PHP.
Uwierz, że taki sposób, nie dość, że zajmie serwerowi mniej czasu to jeszcze kod będzie bardziej przejrzysty.
aniolekx
24.12.2015, 10:42:28
Cytat(24godzina @ 23.12.2015, 19:53:16 )

SELECT ROUND(AVG(Kwota)) AS Srednia AVG(Kwota) AS Srednia , MAX(Kwota) - MIN(Kwota) As Roznica
FROM zamowienia.db
ORDER BY SREDNIA, Roznica
tam brakuje przecinka po srednia, czy to tylko twoja niechlujnosc przy przpeisywaniu? Pozatym BBCode na forum obsluguje sql...
luck
24.12.2015, 10:57:40
Cytat(castagir @ 24.12.2015, 08:55:40 )

Wymagasz zbyt wiele od MySQL.
Jeżeli chcesz jeszcze operować na wynikach - tworzyć jakieś średnie, zaokrąglać itp, to lepiej zostaw te wszystkie operacje dla PHP.
PHP jest stworzone do tego aby wykonywać skomplikowane obliczenia i algorytmy. MySQL jest tylko przechowalnią danych.
Po prostu pobierz co jest Tobie potrzebne i resztę wykonaj w PHP.
Uwierz, że taki sposób, nie dość, że zajmie serwerowi mniej czasu to jeszcze kod będzie bardziej przejrzysty.
Pewnie! Wiemy doskonale, że najlepiej zawsze robić "SELECT * FROM ..." i potem wszystko obrabiać w Pehapie. W końcu nie bez powodu każdy szanujący się programista tak właśnie robi.
@24godzina: Te rozszerzenia .dbf, które pojawiają się w Twoich zapytaniach to mam nadzieję przypadek i rzeczywiście korzystasz z bazy MySQL?
luck mam nadzieję, że żartujesz ;>
luck
24.12.2015, 15:06:40
Cytat(com @ 24.12.2015, 15:01:14 )

luck mam nadzieję, że żartujesz ;>
No raczej
24godzina
29.12.2015, 22:21:57
Zapytanie :
SELECT data_zamowienia, COUNT(*),ROUND(AVG(kwota),2) AS SREDNIA
FROM zamowienia.db
GROUP BY data_zamowienia
HAVING AVG(kwota) >= 30
Błąd
Capability not supported.
jest, jak podpowiada wujek Google, (np
http://edn.embarcadero.com/article/25183) błędem BDE.Nie wiem jak to naprawić. Ktoś pomoże?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.