none
Pivot RRS feed

  • Dotaz

  • Potřeboval bych pomoci.
    Mám tabulku a k ní mám další tabulku, která představuje rozšiřující informace. Skrátka - mám ITC prvek (př. switch) ten má 5 pevně daných atributů (sloupců) a potřebuji dynamicky přidávat další (sloupce). Vyřešil jsem to následovně. Druhá tabulka obsahuje co řádek, to jeden atribut. Zobrazení je OK (jednoduché), ale jak mám prohledávat. Když dvě tabulky k sobbě najoinuji, tak to nemůže fungovat. A PIVOT neumím dopředu složit, tedy to v závorce ([1],[2],...). Případně pošlu dbf soubor s příkladem.

    Dík moc.

    středa 29. dubna 2009 14:03

Odpovědi

  • Jedná se o klasické vyhledávání v atributové databázi.
    Dejme tomu, že máte tabulky:
    Itc [ItcID, Name, ...]
    Attribute [AttributeID, AttributeName, AttributeType, ...]
    ItcAttribute [ItcID, AttributeID, AttributeValue]

    a chcete hledat na podmínku AND přes dva atributy

    SELECT ItcID FROM Itc
        INNER JOIN Attribute aSerialNumber ON (Itc.ItcID = a1.ItcID AND a1.AttributeID = 5 /* AttribteID pro SerialNumber */)
        INNER JOIN Attribute aModelNumber ON (Itc.ItcID = a2.ItcID AND a2.AttributeID = 10 /* AttribteID pro ModelNumber */)
      WHERE
        (Itc.Name LIKE 'switch%')
        AND (aSerialNumber.AttributeValue = '2561-4567')
        AND (aModelNumber.AttributeValue = 'P456-45654-456')
    ...pokud platí, že každý ITC záznam má jenom jedno SN a jedno MN, pak Vám vypadnou jen záznamy, které splňují podmínky. Jinak by se to muselo ještě ošetřit a jednalo by se o atributové kolekce (více SN k jednomu ITC)

    Robert Haken, Microsoft MVP ASP/ASP.NET, HAVIT, s.r.o., www.havit.cz, http://knowledge-base.havit.cz
    čtvrtek 2. července 2009 14:06
    Moderátor

Všechny reakce

  • Co presne prohledavat? vzdyt je to naopak jednodussi nebot prohledavas JEDEN sloupec, ne?

    MP
    středa 29. dubna 2009 18:54
  • Mám tři tabulky atributů: string, number, odkaz. Odkaz nyní neřeším. Pokud spáruji prvek a jeho př. tři atributy, tak mi vznikne seznam tří řádků. To znemená že nemohu použít AND při hledání v těchto třech řádcích. Už to chápeš?
    Jedno řešení mám, ale má ještě zádrhel.

    neděle 3. května 2009 10:52
  • Jedná se o klasické vyhledávání v atributové databázi.
    Dejme tomu, že máte tabulky:
    Itc [ItcID, Name, ...]
    Attribute [AttributeID, AttributeName, AttributeType, ...]
    ItcAttribute [ItcID, AttributeID, AttributeValue]

    a chcete hledat na podmínku AND přes dva atributy

    SELECT ItcID FROM Itc
        INNER JOIN Attribute aSerialNumber ON (Itc.ItcID = a1.ItcID AND a1.AttributeID = 5 /* AttribteID pro SerialNumber */)
        INNER JOIN Attribute aModelNumber ON (Itc.ItcID = a2.ItcID AND a2.AttributeID = 10 /* AttribteID pro ModelNumber */)
      WHERE
        (Itc.Name LIKE 'switch%')
        AND (aSerialNumber.AttributeValue = '2561-4567')
        AND (aModelNumber.AttributeValue = 'P456-45654-456')
    ...pokud platí, že každý ITC záznam má jenom jedno SN a jedno MN, pak Vám vypadnou jen záznamy, které splňují podmínky. Jinak by se to muselo ještě ošetřit a jednalo by se o atributové kolekce (více SN k jednomu ITC)

    Robert Haken, Microsoft MVP ASP/ASP.NET, HAVIT, s.r.o., www.havit.cz, http://knowledge-base.havit.cz
    čtvrtek 2. července 2009 14:06
    Moderátor
  • No tento postup je sice jednoduchý, ale ne dinamický. Dopředu nemohu vědět podle kolika atributů budu hledat. Ale na druhou stranu je možné si toto poskládat ve stringu...čemuž jsem se chtěl vyhnout.
    Moc děkuji.
    středa 16. prosince 2009 14:49