Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> MS SQL i XML, problem ze stworzeniem zapytań
bartek_em
post
Post #1





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

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


Witam.

Mam takiego XML
  1. <?xml version="1.0"?>
  2. <osoba>
  3. <imie>Stanislaw</imie>
  4. <nazwisko>Kowalski</nazwisko>
  5. <pokolenie>1</pokolenie>
  6. <wspolmal>
  7. <imie>Barbara</imie>
  8. <nazwisko>Babacka</nazwisko>
  9. <pokolenie>1</pokolenie>
  10. <osoba>
  11. <imie>Krzysztof</imie>
  12. <nazwisko>Kowalski</nazwisko>
  13. <pokolenie>2</pokolenie>
  14. <wspolmal>
  15. <imie>Martyna</imie>
  16. <nazwisko>Abacka</nazwisko>
  17. <pokolenie>2</pokolenie>
  18. <osoba>
  19. <imie>Zbigniew</imie>
  20. <nazwisko>Kowalski</nazwisko>
  21. <pokolenie>3</pokolenie>
  22. <wspolmal>
  23. <imie>Izabela</imie>
  24. <nazwisko>Peszko</nazwisko>
  25. <pokolenie>3</pokolenie>
  26. </wspolmal>
  27. </osoba>
  28. <osoba>
  29. <imie>Kamil</imie>
  30. <nazwisko>Kowalski</nazwisko>
  31. <pokolenie>3</pokolenie>
  32. </osoba>
  33. <osoba>
  34. <imie>Maria</imie>
  35. <nazwisko>Kowalski</nazwisko>
  36. <pokolenie>3</pokolenie>
  37. </osoba>
  38.  
  39. </wspolmal>
  40. </osoba>
  41.  
  42.  
  43. <osoba>
  44. <imie>Katarzyna</imie>
  45. <nazwisko>Kowalski</nazwisko>
  46. <pokolenie>2</pokolenie>
  47. <wspolmal>
  48. <imie>Mariusz</imie>
  49. <nazwisko>Nowak</nazwisko>
  50. <pokolenie>2</pokolenie>
  51. <osoba>
  52. <imie>Michal</imie>
  53. <nazwisko>Nowak</nazwisko>
  54. <pokolenie>3</pokolenie>
  55. <wspolmal>
  56. <imie>Krystyna</imie>
  57. <nazwisko>Lis</nazwisko>
  58. <pokolenie>3</pokolenie>
  59. </wspolmal>
  60. </osoba>
  61.  
  62. <osoba>
  63. <imie>Daniel</imie>
  64. <nazwisko>Nowak</nazwisko>
  65. <pokolenie>3</pokolenie>
  66. </osoba>
  67. </wspolmal>
  68. </osoba>
  69. </wspolmal>
  70. </osoba>


Jest to jakieś drzewo genealogiczne wymyślone przeze mnie. No i wprowadziłem sobie tego xmla do bazy MS SQL. Wszystko jest w jednej kolumnie.

No i chce napisać komende sqlową która pozwoli znalść kogoś bez wspolmalzonka badz pare bez dziecka i mu go dodać. Narazie mam takie coś
  1. SELECT opis.query('//osoba[imie="Krzysztof" and nazwisko="Kowalski" and pokolenie= "2"]/wspolmal') FROM dzewo;
, to pozwala znaleść kogoś i wypisać jego wspolmaloznka(choć tak to miało wyglądać, rzeczywiscie pokazuje cały węzeł ).Tez nie bardzo mam pomysł jak by napisać by nie wypisywane były pod wezły we <wspolmal></wspolmal>.

Jak ktoś ma pomysł, prosił bym o sugestie.
Go to the top of the page
+Quote Post
Noidea
post
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


No cóż, trochę średnio logiczną strukturę tego dokumentu sobie wymyśliłeś i później są problemy.
Poskładaj sobie kawałek XMLa który chcesz zwrócić w return:
  1. SELECT opis.query('
  2. for $osoba in //osoba
  3. where $osoba/imie="Krzysztof" and
  4. $osoba/nazwisko="Kowalski" and
  5. $osoba/pokolenie=2
  6. return <wspolmal>
  7. {
  8. $osoba/wspolmal/imie,
  9. $osoba/wspolmal/nazwisko,
  10. $osoba/wspolmal/pokolenie
  11. }
  12. </wspolmal>
  13. ')
  14. FROM drzewo



EDIT:
Lub jeśli wolisz styl bardziej XPathowy:
  1. SELECT opis.query('
  2. let $wspolmalzonek := //osoba[imie="Krzysztof" and nazwisko="Kowalski" and pokolenie=2]/wspolmal
  3. return <wspolmal>
  4. {
  5. $wspolmalzonek/imie,
  6. $wspolmalzonek/nazwisko,
  7. $wspolmalzonek/pokolenie
  8. }
  9. </wspolmal>
  10. ')
  11. FROM drzewo


Ten post edytował Noidea 20.12.2010, 21:31:03


--------------------
Go to the top of the page
+Quote Post
bartek_em
post
Post #3





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

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


A no miałem problem coś bardziej logicznego wymyśleć. Dzięki za pomoc z tym wypisywaniem. A wiesz może, jak by dodawanie zrealizować?
Go to the top of the page
+Quote Post
sunpietro
post
Post #4





Grupa: Zarejestrowani
Postów: 262
Pomógł: 26
Dołączył: 23.01.2009
Skąd: eZ Systems

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


zainteresuj się SPARQL winksmiley.jpg


--------------------
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 - 09:19