Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Odwołanie do danych wydzielonych z łańcucha
widlus
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.01.2013

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


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.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
netmare
post
Post #2





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

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


Pokaż jeszcze kawałki prawdziwych tabel bo coś pokręciłeś ten opis.
Go to the top of the page
+Quote Post
widlus
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.01.2013

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


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?
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 Aktualny czas: 21.08.2025 - 00:47