Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak połączyć kolumny z tej samej tabeli i jak zgrupować je stosując GROUP BY
Forum PHP.pl > Forum > Bazy danych > MySQL
teom
Mam tabelę "kody".

-------------------------
|a1|a2|b1|b2|c1|c2 |
-------------------------
|2 |aa |2 |aa |2 |bb |
|2 |aa |2 |bb |4 |bb |
|2 |gg |3 |bb |4 |bb |
|5 |gg |4 |gg |4 |gg |
-------------------------

Chcę teraz połączyć kolumny w pionie a1 z b1 i c1 oraz a2 z b2 i c2 (tak jak poniżej)

----------
|a1 | a2 |
----------
| 2 | aa |
| 2 | aa |
| 2 | gg |
| 5 | gg |
----------
|b1 | b2 |
----------
| 2 | aa |
| 2 | bb |
| 3 | bb |
| 4 | gg |
----------
|c1 | c2 |
----------
| 2 | bb |
| 4 | bb |
| 4 | bb |
| 4 | gg |
----------


i obliczyć ile jest w drugiej kolumnie kodów aa, bb i gg. Warunek jest taki, że interesują mnie tylko te wartości z drugiej kolumny, które mają w pierwszej kolumnie wartość "2". Wynik więc powinien wyglądać tak:

aa jest 3
bb jest 2
gg jest 1

Wiem, że trzeba zastosować ALIASY kolumn i polecenie GROUP BY. Za nic jednak nie mogę uzyskać takiego wyniku.

Proszę was o wsparcie.
Sh4dow
zalezy ci na elastycznosci ? wydajnosci ? czy poprostu na rozwiazaniu ? bo szczerze mowiac to niezle pokiełasione to jest.
Cytat
Chcę teraz połączyć kolumny w pionie a1 z b1 i c1 oraz a2 z b2 i c2 (tak jak poniżej)

a ponizej pokazyjesz 3 a nie jak napisałes 2 tablice. Wiec moze by tak ujednolicic tresc posta, to moze cos wymyslimy.

A jak chcesz sprawdzac ile jest rekordow danej wartosci to zrob 3 zapytania i zsumuj sobie te wartosci i bedziesz mial
teom
Tabela "kody" zawiera 6 kolumn i a1, a2, b1, b2, c1, c2. Chcę ją teraz przekształcić (na czas zapytania mysql), tak aby pogrupować wartości z kolumn a2, b2, c2 pod warunkiem, że w kolumnie a1, b1, c1 znajduje się wartość 2.

Nie wiem jak prościej mogę to wytłumaczyć.

Zależy mi na szybkości działania i wiem, że da się to zrobić w jednym zapytaniu.
Wykrywacz
Jak już napisałem ci w crospotowanym temacie, użyj SUM i Count.
I to powinno wystarczyć ew. to zagnieźć.

A ty też powtórze, że wygląda mi to na zadanie domowe. A tych że o ile wiem nie rozwiązuje się za kogoś
Sh4dow
  1. SELECT COUNT(a2) AS ile, a2 FROM kody GROUP BY a2 UNION
  2. SELECT COUNT(b2) AS ile, b2 FROM kody GROUP BY b2 UNION
  3. SELECT COUNT(c2) AS ile, c2 FROM kody GROUP BY c2


W jednym zapytaniu nie wiem jak polaczyc sumy, ale mozesz probowac po tym zapytaniu sumowac, albo wpisac to do jednej tablicy a pozniej sumowac
teom
Chyba innego sposobu nie ma - dzięki serdeczne Sh4dow.

"Wykrywacz" - zadania skończyłem odrabiać 10 lat temu, na studiach. Teraz uczę się php i MySql stąd moje pytanie na tym forum.
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.