Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Komórka z identyfikatorami rozdzielonymi przecinkiem złączenie
Crxiak
post 26.02.2015, 01:35:22
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 18.04.2007

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


Witam,

Mam problem nad którym dzisiaj ostro siedziałęm i nic nie wskórałem. Potrzebuję wyciągnąć z komórki dane rozdzielone przecinkami i dopasować komórki z innej tabeli. Może prościej będzie jak opiszę bo już późno i mózg ciężko dyszy.

Mam tabelkę obserwacje

  1. id_obserwacji ---- typ_obserwacji ---- glowny_obserwator ---- dodatkowi_obserwatorzy


Oraz drugą uzytkownicy

  1. user_id ---- user_nazwisko --- user_email


W kolumnie dodatkowi_obserwatorzy są identyfikatory uzytkownikow oddzielone przecinkiem w postaci: 11,123,921 lub 11,12,121

Potrzebuje wygenerowac tabelke ktora wyciaganie wszystkie dane, rozdzieli dane z kolumny dodatkowi_obserwatorzy i wyświetli w ich miejscu nazwisko z tabeli uzytkownicy

Kompletnie nie mam pojęcia jak to ugryźć. Próbowałem coś z substring_index(columna, ',',1) to dawało fajny efekt ale tylko dla pierwszego dopasowania, nie mam pojęcia jak na tej samej zasadzie wyciągnąć drugi identyfikator po przecinku oraz trzeci:

  1. SELECT
  2. id_obserwacji, typ_obserwacji, glowny_obserwator, dodatkowi_obserwatorzy, user_email
  3. FROM
  4. obserwacje o
  5. LEFT JOIN
  6. t_users u ON (substring_index(observers, ',',1) = u.user_id


Niestety nie mam możliwości zmiany struktury tabel.

Będę wdzięczny za naprowadzenie na rozwiązanie.

Pozdrawiam!

Ten post edytował Crxiak 26.02.2015, 01:36:21
Go to the top of the page
+Quote Post
pmir13
post 27.02.2015, 10:35:15
Post #2





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

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


Trochę pomieszałeś nazwy tabel i kolumn, raz są przetłumaczone, raz nie, ale ogólnie potrzebujesz tego:
  1. SELECT id_obserwacji, typ_obserwacji, glowny_obserwator, dodatkowi_obserwatorzy, user_id, user_email
  2. FROM obserwacje o LEFT JOIN uzytkownicy u
  3. ON FIND_IN_SET (u.user_id,o.dodatkowi_obserwatorzy)

Ewentualnie może być potrzebne dodatkowe ORDER BY.
Wydajności się nie spodziewaj, takie wrzucanie listy id do jednej kolumny to jest coś, co może wymyślić tylko ktoś bardzo początkujący. To jest zaprzeczenie całej idei złączeń w bazach danych.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 22.06.2025 - 03:44