Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]JOIN + GROUP_CONCAT błedne działanie
inomi13
post
Post #1





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 16.08.2017

Ostrzeżenie: (0%)
-----


Witam posiadam bazę danych w której są 3 tabele. Jedna tabela o nazwie persons zawiera dane personalne czyli id i name. Druga tabela o nazwie domains , a trzecia tabela o nazwie e-mail. Tabele połączone są relacjami i poniższe zapytanie działa, jednak chciałbym aby adresy e-mail grupowane były względem danej domeny, natomiast w przypadku kiedy dany użytkownik posiada jedną domenę i 4 adresy e-mail w danej domenie to poniższe zapytanie czterokrotnie wyświetli imię użytkownika i nazwę domeny, a chciałbym aby imię użytkownika, nazwa domeny wyświetla się tylko raz, a adresy e-mail żeby były pogrupowane względem tej domeny.

  1. SELECT p.name, d.domain_name,e.adres_email FROM domains d LEFT JOIN persons p ON d.id_person = p.id LEFT JOIN email e ON d.id = e.id_domain WHERE p.id = "19"







Ten post edytował inomi13 15.01.2020, 12:26:23
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
inomi13
post
Post #2





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 16.08.2017

Ostrzeżenie: (0%)
-----


Grupując względem d.domain_name było by ok, gdyby nie fakt że mam jeszcze jedną tabelę "persons" więc finalnie chcę mieć wszystko grupowane względem p.id. Zastawiam się czy jestem wstanie do obrobić w jednym zapytaniu. Chyba trochę na mieszałem w tym temacie więc opiszę to jeszcze raz ale dokładniej.

Mam 3 tabele "Persons" "Domain" "email". Tabele są ze sobą połączone "Persons"- > id_persons "Domain" "Domain"-> id.domain"email". Potrzebuje zrobić zapytanie które wypisze mi osobę która posiada jakieś domeny oraz przypisane do nich adresy e-mail. W bazie danych zdarza się że jakaś domena nie posiada adresów email. Stworzyłem poniższe zapytanie który dubluje mi nazwy domen oraz nie wypisuje domen które nie posiadając przypisanego adresu e-mail.

  1. "SELECT p.id, p.name, GROUP_CONCAT(d.domain_name) AS domain_names, GROUP_CONCAT(e.adres_email) as adres_email FROM persons p LEFT JOIN domains d
  2. ON d.id_person = p.id JOIN email e ON d.id=e.id_domain GROUP BY p.id"



(IMG:https://i.stack.imgur.com/ZCUab.jpg)

Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.12.2025 - 19:14