Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Komórka z identyfikatorami rozdzielonymi przecinkiem złączenie
Forum PHP.pl > Forum > Bazy danych > MySQL
Crxiak
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!
pmir13
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.
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.