Bir 1 olan bir veritabanı sorgu bir XML belgesi oluşturmak için tasarım desen: Birçok ilişki

0 Cevap php

Tümü,

Belirsiz başlık için şimdiden özür dilerim.

Burada yapmaya çalıştığım buydu ...

Ben öğelerin bir listesini almak için bir veritabanını sorgulamak için gereken bir uygulama üzerinde çalışıyorum. Öğelerin Bu liste sorgulama ön ucuna geri alır, bir XML belgenin biçimlendirilmiş içine alacak.

Basitleştirmek için, en öğeler kitapları vardır diyelim. Her kitap, aşağıdaki özelliklere sahiptir: ISBN, Başlık, Yazar, Fiyat. Her kitap AYRICA arasında 0 ve n yorumlar var

"Book_info" ve "book_reviews": Yani, veri 2 tablolarda saklanır. Her kitap "book_info" bir satır vardır, ve "book_reviews" 0 ve n satırlar arasında.

Ben bu gibi bakmak için geri alır XML istiyorum:

<books>
    <book isbn='xxxxxx' title='abcde' author='xzy' price='99.99'>
        <review>blah, blah, blah</review>
    </book>
    <book isbn='xxxxxx' title='abcde' author='xzy' price='99.99'>
        <review>blah, blah, blah</review>
        <review>blah, blah, blah</review>
        <review>blah, blah, blah</review>
    </book>
    <book isbn='xxxxxx' title='abcde' author='xzy' price='99.99' />
</books>

Gördüğünüz gibi, ilk kitap, ikinci üç vardır, ve üçüncü hiçbiri vardır, bir inceleme vardır.

Benim sorum şudur: Böyle bir yapı inşa etmek için en etkili yolu nedir?

Örneğin, ben bu gibi kitapların listesini alabilirsiniz:

Select isbn, title, author, price from book_info where title like "%learn to%"

Sonuç kümesi yineleme, ben XML belgesi oluşturabilirsiniz. Ama nasıl yorum alabilirim?

Bariz bir çözüm şudur: Her interation ile yine veritabanını sorgulamak, sonra o satırda kitap için ISBN olsun:

select review from book_review where book_review.isbn = [the current isbn]

Bu "alt"-sonuç ayarlanmış olsa yineleme, ben şu anki kitap düğüm çocuk "yorum" düğüm ekleyebilirsiniz.

Bu sorun 100 kitap ilk sonuç kümesinde varsa, ben 100 SQL tüm değerlendirmeleri aramak için komutları çalıştırmak zorunda olmasıdır.

Yani, ikinci bir düşünce bu oldu:

  1. Bir sorgu ile arama eşleşen tüm kitapları seçin
  2. XML belgesi oluşturmak
  3. 1. adımda tüm kitapların tüm değerlendirmeleri almak için "book_reviews" karşı bir sorgu yürütmek (örneğin, "ISBN ([ISBN listesi]) book_reviews adlı incelemeyi seçin")
  4. Bu sonuç kümesi yineleme; Her inceleme için, çok karşılık kitap için XML düğümü bulmak ve ona bir çocuk düğüm eklemek

Bu sadece iki SQL sorguları demek, ancak XML belgesinin aracılığıyla arıyor olacaktır.

Sonuçta, bu ikisi de biraz kaba görünüyor. Bu ortak bir sorun olması gerekir gibi görünüyor bu yana, ben bunun için bir güzel, zarif bir çözüm vardır umut ediyorum.

Bu değer ne için, ben sorguları yürütmek ve XML belgesini monte SQL Server ve PHP kullanıyorum.

Herhangi bir rehberlik ve anlayış için şimdiden çok teşekkürler.

Cheers, Matt

0 Cevap