![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 18.12.2015 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
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 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 18.12.2015 Ostrzeżenie: (0%) ![]() ![]() |
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. Ten post edytował 24godzina 18.12.2015, 20:39:24 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
przeciez ten blad nie ma nic wspolnego z zapytaniem.... czytasz w ogole te komunikaty
![]() ps: przenosze -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 18.12.2015 Ostrzeżenie: (0%) ![]() ![]() |
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ść. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 3 Dołączył: 28.10.2014 Ostrzeżenie: (10%) ![]() ![]() |
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:
*nazwaMiasta* - zamiast tego fragmentu wpisujesz sobie nazwę właściwą. Tylko nie ubieraj jej w te gwiazdki ![]() Ten post edytował castagir 19.12.2015, 17:42:52 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 18.12.2015 Ostrzeżenie: (0%) ![]() ![]() |
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? Ten post edytował 24godzina 20.12.2015, 11:04:48 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 218 Pomógł: 16 Dołączył: 6.06.2014 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
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? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 18.12.2015 Ostrzeżenie: (0%) ![]() ![]() |
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? |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Wstaw alias i się przekonaj. COUNT() AS ilosc
-------------------- |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 3 Dołączył: 28.10.2014 Ostrzeżenie: (10%) ![]() ![]() |
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: 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. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 18.12.2015 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 3 Dołączył: 28.10.2014 Ostrzeżenie: (10%) ![]() ![]() |
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ą: 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:
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. Ten post edytował castagir 22.12.2015, 18:59:30 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 18.12.2015 Ostrzeżenie: (0%) ![]() ![]() |
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? |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
myślę, że to pomoże
https://thingsilearn.wordpress.com/2008/02/...regexp-vs-like/ |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 3 Dołączył: 28.10.2014 Ostrzeżenie: (10%) ![]() ![]() |
Jeżeli chcesz coś wyszukać na podstawie jakiegoś parametru nie używaj LIKE tylko operatorów.
Ten post edytował castagir 23.12.2015, 09:48:57 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 18.12.2015 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 3 Dołączył: 28.10.2014 Ostrzeżenie: (10%) ![]() ![]() |
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. |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 340 Pomógł: 46 Dołączył: 31.07.2009 Skąd: A Ostrzeżenie: (0%) ![]() ![]() |
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... |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 317 Pomógł: 58 Dołączył: 6.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
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? -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 14:58 |