Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odwołanie do danych wydzielonych z łańcucha
Forum PHP.pl > Forum > PHP
widlus
Witam
Mam taki kod :

  1. SELECT
  2. loc4.locationpath,,
  3.  
  4. locationpath,
  5. SUBSTRING(locationpath,1, (CHARINDEX('/',locationpath))+6) AS locationpath_1,
  6. SUBSTRING(locationpath,(CHARINDEX('/',locationpath))+8, CHARINDEX('/',(substring(locationpath, CHARINDEX('/',locationpath)+1,len(locationpath))))-1) AS locationpath_2,
  7.  
  8. SUBSTRING(locationpath,(CHARINDEX('/',locationpath))+15, CHARINDEX('/',(substring(locationpath, CHARINDEX('/',locationpath)+3,len(locationpath)))) +1) AS locationpath_3,
  9.  
  10. SUBSTRING(locationpath,(CHARINDEX('/',locationpath))+22, CHARINDEX('/',(substring(locationpath, CHARINDEX('/',locationpath)+3,len(locationpath)))) +1) AS locationpath_4
  11.  
  12.  
  13. FROM
  14. child
  15.  
  16. LEFT JOIN location loc4 ON child.location_id = loc4.id



Powyższe polecenie dzieli mi łańcuch lokacji na pojedyncze kawałki lokacji np: 443563/443943/443957/443959 na kawałki 443563 443943 443957 443959 w kolejnych locationpatch.
W tabeli child
W tabeli o nazwie location mam pola id i name (gdzie "id" to liczba np. 443943 a "nazwa" to nazwa lokacji).
Chcę wyświetlić nazwy konkretnych lokacji wydzielonych z łańcucha w osobnych kolumnach (np. zamiast 443563 to Polska).
Powinienem te locationpath jakoś specjalnie aliasować, żeby móc się odwoływać do tych liczb?

Dziękuję za podpowiedzi.

netmare
Pokaż jeszcze kawałki prawdziwych tabel bo coś pokręciłeś ten opis.
widlus
Masz rację pokręciłem, przepraszam smile.gif

Tabele wyglądają tak:

  1. CREATE TABLE child (
  2. id bigint NOT NULL,
  3. firstname character varying(1000) NOT NULL,
  4. lastname character varying(1000) NOT NULL,
  5. location_id bigint,
  6.  
  7. );
  8.  
  9. CREATE TABLE location (
  10. id bigint NOT NULL,
  11. locationpath character varying(1000) NOT NULL,
  12. name character varying(1000) NOT NULL,
  13. );
  14.  



Przykładowy record z tabeli location wyglada tak (w nawiasach wartości):

id [443771]
locationpath [/443563/443759/443767/443771]
name [Lokacja4]

W locationpath znajdują się ID poszczególnych lokacji. Potrzebuję rozdzielić locationpath na 4 kawałki, żeby dostać ID lokacji nadrzędnych (to robi kod, który wstawiłem w 1 poście), a następnie (to z czym mam problem) chcę wyciągnąć NAME dla wyjętych z locationpath ID.


Wynikowa tabela powinna zawierać imię i nazwisko dziecka i nazwy 4 kolejnych lokacji, których ID zapisane są w locationpath.
Mam nadzieję, że teraz wyraziłem się lepiej smile.gif

Czy ma ktoś jakiś pomysł rozwiązania tego problemu?
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.