Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
Zapytanie pod warunkiem 1 nazwy - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: Programowanie, Bazy danych (https://www.webmastertalk.pl/forum-programowanie-bazy-danych)
+--- Wątek: Zapytanie pod warunkiem 1 nazwy (/thread-zapytanie-pod-warunkiem-1-nazwy)

Strony: 1 2


Zapytanie pod warunkiem 1 nazwy - Intelactive - 10-12-2012

Witam. Jak ułożyć zapytanie, tak by pogrupowało rekordy z daną nazwą.

Mam tabele z pytaniami, i mam tabele z odpowiedziami.

Z odpowiedziami mam np. pytanie_id i chcę aby liczyło mi rekordy z danym id.

Mam np. 2 odpowiedzi z id 3 - liczy mi te ktore ma 3
Mam np. 1 odpowiedz do pytania id 8 i liczy mi ile jest odpowiedzi do tego pytania id 8.

Np.

Odpowiedzi: 1 - Tytuł
Odpowiedzi 0 - tytuł1

Nie umiem tego napisać prościej.

Wiem jak policzyć, nie wiem jak zapytanie skonstruować.


RE: Zapytanie pod warunkiem 1 nazwy - Pedro84 - 10-12-2012

COUNT() + GROUP BY


RE: Zapytanie pod warunkiem 1 nazwy - Intelactive - 10-12-2012

O to chodziło, dzięki ; )


RE: Zapytanie pod warunkiem 1 nazwy - Intelactive - 11-12-2012

Próbowałem tak, ale coś nie wychodzi, gdzie mam błąd?

$zapytanie = mysql_query("SELECT COUNT() from answers GROUP BY question_id");
echo mysql_num_rows($zapytanie);


RE: Zapytanie pod warunkiem 1 nazwy - Pedro84 - 11-12-2012

Pokaż strukturę tabel, ok?


RE: Zapytanie pod warunkiem 1 nazwy - Intelactive - 11-12-2012

//Tworzymy trzecią tabele
mysql_query("CREATE TABLE `questions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` text NOT NULL,
`text` text NOT NULL,
`add` varchar(50) NOT NULL,
`data` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;");


//Tworzymy trzecią tabele
mysql_query("CREATE TABLE `answers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`question_id` int(11) NOT NULL,
`text` text NOT NULL,
`add` varchar(50) NOT NULL,
`data` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;");


RE: Zapytanie pod warunkiem 1 nazwy - Pedro84 - 11-12-2012

Dobra:
1. przy COUNT() liczysz wystąpienia w zbiorze jakiejś kolumny, u Ciebie nie ma
2. analogicznie, musisz stworzyć złączenie (JOIN)


RE: Zapytanie pod warunkiem 1 nazwy - Intelactive - 11-12-2012

SELECT COUNT(*) FROM tabela

Nie rozumiem punktu 2. Możesz mi wytłumaczyć?


RE: Zapytanie pod warunkiem 1 nazwy - Pedro84 - 11-12-2012

(11-12-2012, 20:01)Intelactive napisał(a): SELECT COUNT(*) FROM tabela

Nie rozumiem punktu 2. Możesz mi wytłumaczyć?
1. Lepiej licz po ID.
2. Jeśli chcesz pobrać rekordy z dwóch tabel, to musisz zastosować joina, nie? Wink W manualu MySQL znajdziesz co i jak.


RE: Zapytanie pod warunkiem 1 nazwy - Intelactive - 11-12-2012

Nie chce pobierać rekordy z 2 tabel. Chce by pogrupowało mi z answers po nazwach ; )

SELECT COUNT(*) FROM tabela GROUP BY costam.

Chyba źle się wyrazilem. To policzy mi ile tego jest.

Ja chcę, by wyświetlało mi dla każdego question_id ile jest.

Przykładowo jest trzy 2id w question id i pięc 3id w question_id
Chcę by wyświetliło mi, 6 i 15

Pokaże może jak to ma wyglądać ; )

Odpowiedzi 1: Tytuł
Odpowiedzi 1: blabla
Odpowiedzi 8: blabla
itp.