Mam system zbudowany na relacyjnej bazie danych MySQL, która pozwala ludziom przechowywać szczegóły "leadów". Ponadto, ludzie mogą tworzyć własne kolumny, w których przechowują dane, a następnie dodając nowe konta mogą dodawać dane pod nimi. Struktura tabeli wygląda następująco:Jak odzyskać atrybuty "dynamiczne" przechowywane w wielu wierszach jako normalne rekordy?
PROWADZI - ID, e-mail, USER_ID
atrybuty - id, attr_name, user_id
ATTR_VALUES - lead_id, attr_id, wartość: identyfikator_użytkownika
Oczywiście w tych tabelach "user_id" odnosi się do tabeli "Users", która zawiera tylko osoby, które mogą zalogować się do systemu.
Piszę funkcję do wyprowadzania szczegółów ołowiu, a obecnie właśnie przechodzę przez podstawowe szczegóły ołowiu jako zapytanie, a następnie przeciągając przez każdą wartość atrybutu związaną z tym potencjalnym klientem (dołączając do tabeli atrybutów, aby uzyskać nazwę) i następnie dołączanie do tablic w PHP. Jest to trochę nieporządne i zastanawiałem się, czy istnieje sposób, aby to zrobić w jednym zapytaniu SQL. Czytałem trochę o czymś zwanym "stołem przestawnym", ale staram się zrozumieć, jak to działa.
Każda pomoc zostanie bardzo doceniona. Dzięki!
MySql nie obsługuje poleceń Pivot. Eh, to nic nie kosztuje. – McGarnagle
@dbase (microsoft?) Człowiek: nie * "Eh, to nic nie kosztuje" *, ale * "Eh, to baza danych" * (w przeciwieństwie do ...). Polecenia przestawne nie należą do bazy danych, ale do poziomu prezentacji. – TMS
Dobre pytanie, chociaż tytuł wprowadzał w błąd - jest możliwe w pojedynczej kwerendzie z łatwością, wystarczy normalnie dołączyć do wszystkich tabel - ale to nie jest to, czego prawdopodobnie chcesz. Edytowano tytuł. – TMS