Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dane z kilku tabel + COUNT
Forum PHP.pl > Forum > Bazy danych > MySQL
mis
Hej, mam kilka tabel, w 1 tabeli posiadam wszystkie podstawowe dane, w innych mam np. komentarze/głosowanie/ulubione itp.

Oczywiście w każda tabela jest powiązana po ID. Potrzebuje pomocy, przy tworzeniu zapytania, by pobrać dane z 1 tabeli + ilość kolumn z pozostałych, tam gdzie ID są takie same.

JOIN'em to chyba nie pójdzie, bo próbowałem.
Teraz pobieram 1 zapytaniem dane z 1 tabeli(główne informacje) + UNION w 2 zapytaniu, (SELECT COUNT(id) .... ) - jednak nie wiem czy to jest optymalne?
widmo_91
to spróbuj to teraz zrobić z INNER JOIN, COUNT i GROUP BY
mis
Każda wartość COUNT jest taka sama, w tym wypadku najwyższa, wydaje mi się, że tego nie da się zapisać w 1 zapytniu używając JOIN'a. Ale może ktoś bardziej doświadczony coś poradzi.
Pyton_000
A możesz to zobrazować? Bo albo ja po piwie nie jestem w stanie skumać ocb, alb po prostu nie rozumiem smile.gif
mis
to może wrzuce zapytanie będzie łatwiej i ktoś spojrzy czy dobrze zapytania konstruuje:

Cytat
SELECT d.*, u.username, count(k.kom_id) AS kom_count , count(l.ulid) AS ul_count
FROM dane d
LEFT JOIN komentarze k ON (k.filmid = d.id)
LEFT JOIN ulubione l ON (l.filmid = d.id ),
users u
WHERE d.id = '1' AND u.user_id = d.userid


Czyli pobrać wszystko z tabeli z danymi oraz ilość komentarzy oraz ilość osób która dodała do ulubionych. Wszsytko związane po 1 ID.

Dobra chyba sam rozwiązałem problem.
Rozwiązaniem było dodanie distinct w COUNT wink.gif
-----
Ale ma kolejne pytanie, najprościej, robie SELECT mam np. 3 wyniki, czy mogę te 3 wyniki z poziomu MYSQL zamienić na 1 oddzielony np. przecinkiem?
mis
Tak o CONCAT wiem, tylko w sumie pisząc to w nocy nieprzemyślałem tego co pisze, wydaje mi się, że nie ma takiej mołziwości, dokładniej dając SLECET:

RAZ
DWA
TRZY

Chciałem uzyskać coś takiego: RAZ,DWA,TRZY.
Pyton_000
Pokaż zapytanie
mis
Może bardziej opiszę problem, bo jestem ciekawy czy jest taka opcja.
Przykładowo mam 2 tabele:
1. Książki (tutaj pełne dane o książkach)
2. Kategorie

Łączy jest ID.
Chcę pobrać listę książek + ich kategorie, gdyby 1 książka = 1 kategoria problemu nie ma, a gdy jest relacja 1 do wielu jak to wygląda?
mmmmmmm
  1. SELECT id_ksiazki, GROUP_CONCAT(id_kategorii) FROM ksizki_kategorie GROUP BY id_ksizki
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.