Likes Likes:  0
Resultaten 1 tot 9 van de 9
Geen
  1. #1
    Nico Schuyt
    Traceren van records zonder child
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Traceren van records zonder child

    Tabellen Groep, Subgroep en Artikel.
    Een Groep heeft altijd een of meer Subgroepen (1:n). Artikel is optioneel
    0:n.

    Ik probeer records uit Groep te achterhalen zonder artikelen.

    Een van de vele pogingen:
    select g.naam
    from groep as g, subgroep as s left outer join artikel as a on
    a.subgroep_id=s.subgroep_id
    where g.groep_id=s.groep_id and a.subgroep_id IS NULL
    group by g.groep_id
    order by g.naam
    Dit werkt niet omdat een record uit Groep waar één van de records uit
    Subgroep geen artikel heeft ook getoond wordt.

    Het lukt me alleen door eerst in tabel Groep de records te markeren waar WEL
    een artikel bij hoort en daarna te kijken bij welke dat niet zo is.

    Heeft iemand een suggestie voor de SQL om ze rechtstreeks te vinden?

    --
    Nico Schuyt
    http://www.nicoschuyt.nl/



  2. #2
    Erik Baas
    Traceren van records zonder child
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Traceren van records zonder child

    Nico Schuyt wrote:

    > Tabellen Groep, Subgroep en Artikel.
    > Een Groep heeft altijd een of meer Subgroepen (1:n). Artikel is
    > optioneel 0:n.


    > Ik probeer records uit Groep te achterhalen zonder artikelen.

    [KNIP]
    > Dit werkt niet omdat een record uit Groep waar één van de records
    > uit Subgroep geen artikel heeft ook getoond wordt.


    Even voor de zekerheid: je zoekt dus naar groepen waarvan _alle_
    subgroepen nul artikelen hebben ?

    --
    Erik.

  3. #3
    Nico Schuyt
    Traceren van records zonder child
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Traceren van records zonder child

    Erik Baas wrote:
    > Nico Schuyt wrote:


    >> Tabellen Groep, Subgroep en Artikel.
    >> Een Groep heeft altijd een of meer Subgroepen (1:n). Artikel is
    >> optioneel 0:n.


    >> Ik probeer records uit Groep te achterhalen zonder artikelen. [KNIP]
    >> Dit werkt niet omdat een record uit Groep waar één van de records
    >> uit Subgroep geen artikel heeft ook getoond wordt.


    > Even voor de zekerheid: je zoekt dus naar groepen waarvan _alle_
    > subgroepen nul artikelen hebben ?


    Klopt :-)

    --
    Nico Schuyt
    http://www.nicoschuyt.nl/



  4. #4
    Erik Baas
    Traceren van records zonder child
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Traceren van records zonder child

    Nico Schuyt wrote:

    > >> Tabellen Groep, Subgroep en Artikel.
    > >> Een Groep heeft altijd een of meer Subgroepen (1:n). Artikel is
    > >> optioneel 0:n.

    >
    > >> Ik probeer records uit Groep te achterhalen zonder artikelen. [KNIP]
    > >> Dit werkt niet omdat een record uit Groep waar één van de records
    > >> uit Subgroep geen artikel heeft ook getoond wordt.

    >
    > > Even voor de zekerheid: je zoekt dus naar groepen waarvan _alle_
    > > subgroepen nul artikelen hebben ?


    > Klopt :-)


    Dan kun je in elk geval de tabel Groep uit de query laten. Join Subgroep
    en Artikel, en group by s.group_id (niet getest).

    --
    Erik.

  5. #5
    Jan Kuiken
    Traceren van records zonder child
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Traceren van records zonder child

    Nico Schuyt wrote:
    > Tabellen Groep, Subgroep en Artikel.
    > Een Groep heeft altijd een of meer Subgroepen (1:n). Artikel is optioneel
    > 0:n.


    optioneel voor wat?

    > Ik probeer records uit Groep te achterhalen zonder artikelen.
    >
    > Een van de vele pogingen:
    > select g.naam
    > from groep as g, subgroep as s left outer join artikel as a on
    > a.subgroep_id=s.subgroep_id
    > where g.groep_id=s.groep_id and a.subgroep_id IS NULL
    > group by g.groep_id
    > order by g.naam
    > Dit werkt niet omdat een record uit Groep waar één van de records uit
    > Subgroep geen artikel heeft ook getoond wordt.
    >
    > Het lukt me alleen door eerst in tabel Groep de records te markeren waar WEL
    > een artikel bij hoort en daarna te kijken bij welke dat niet zo is.
    >
    > Heeft iemand een suggestie voor de SQL om ze rechtstreeks te vinden?
    >

    Kun je de velden van de tabellen ook geven, dit maakt het analyseren
    van het probleem makkelijker (wellicht zit daar het probleem)

    Jan Kuiken

  6. #6
    Nico Schuyt
    Traceren van records zonder child
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Traceren van records zonder child

    Erik Baas wrote:
    > Nico Schuyt wrote:
    >
    >>>> Tabellen Groep, Subgroep en Artikel.
    >>>> Een Groep heeft altijd een of meer Subgroepen (1:n). Artikel is
    >>>> optioneel 0:n.
    >>>> Ik probeer records uit Groep te achterhalen zonder artikelen.
    >>>> [KNIP] Dit werkt niet omdat een record uit Groep waar één van de
    >>>> records uit Subgroep geen artikel heeft ook getoond wordt.


    >>> Even voor de zekerheid: je zoekt dus naar groepen waarvan _alle_
    >>> subgroepen nul artikelen hebben ?


    >> Klopt :-)


    > Dan kun je in elk geval de tabel Groep uit de query laten. Join
    > Subgroep en Artikel, en group by s.group_id (niet getest).


    Dat zal ongetwijfeld werken, maar ik wil tabel Groep er in houden omdat ik
    juist van die records wil zien of er artikelen aan gekoppeld zijn. (Als dit
    lukt wil ik de eventuele aanwezigheid van artikelen ook opvragen op hogere
    niveaus (groepen zijn childs van Hoofdgroep bijvoorbeeld)

    --
    Nico Schuyt
    http://www.nicoschuyt.nl/





  7. #7
    Nico Schuyt
    Traceren van records zonder child
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Traceren van records zonder child

    Jan Kuiken wrote:
    > Nico Schuyt wrote:
    >> Tabellen Groep, Subgroep en Artikel.
    >> Een Groep heeft altijd een of meer Subgroepen (1:n). Artikel is
    >> optioneel 0:n.


    > optioneel voor wat?


    Voor Subgroep. Die kan dus een artikel als child hebben, maar het is niet
    verplicht.

    >> Ik probeer records uit Groep te achterhalen zonder artikelen.
    >>
    >> Een van de vele pogingen:
    >> select g.naam
    >> from groep as g, subgroep as s left outer join artikel as a on
    >> a.subgroep_id=s.subgroep_id
    >> where g.groep_id=s.groep_id and a.subgroep_id IS NULL
    >> group by g.groep_id
    >> order by g.naam
    >> Dit werkt niet omdat een record uit Groep waar één van de records uit
    >> Subgroep geen artikel heeft ook getoond wordt.


    >> Heeft iemand een suggestie voor de SQL om ze rechtstreeks te vinden?


    > Kun je de velden van de tabellen ook geven, dit maakt het analyseren
    > van het probleem makkelijker (wellicht zit daar het probleem)


    Hele waslijst :-)
    Ik heb voor de test een extra database gemaakt met:
    Groep
    - groep_id
    - naam
    Subgroep
    -subgroep_id
    - groep_id
    Artikel
    -art_id
    -subgroep_id
    --
    Nico Schuyt
    http://www.nicoschuyt.nl/




  8. #8
    Jan Kuiken
    Traceren van records zonder child
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Traceren van records zonder child

    Nico Schuyt wrote:

    >>> Ik probeer records uit Groep te achterhalen zonder artikelen.


    [ knip ]

    > Ik heb voor de test een extra database gemaakt met:
    > Groep
    > - groep_id
    > - naam
    > Subgroep
    > -subgroep_id
    > - groep_id
    > Artikel
    > -art_id
    > -subgroep_id


    ik denk aan zoiets als het volgende, kon het echter niet testen
    omdat de MySQL die ik gebruik versie 3.23 is subqueries vanaf
    4.1 zijn.

    SELECT groep.name
    FROM groep
    WHERE groep.id NOT
    IN
    (
    SELECT DISTINCT groep.id
    FROM artikel
    LEFT JOIN subgroep ON artikel.subgroep = subgroep.id
    LEFT JOIN groep ON subgroep.groep = groep.id
    )

    omschrijven volgens "13.2.8.11. Rewriting Subqueries as
    Joins for Earlier MySQL Versions" is ook trickey

    Jan Kuiken

  9. #9
    Nico Schuyt
    Traceren van records zonder child
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Traceren van records zonder child

    Jan Kuiken wrote:
    > Nico Schuyt wrote:
    >
    >>>> Ik probeer records uit Groep te achterhalen zonder artikelen.


    [knip]

    > ik denk aan zoiets als het volgende, kon het echter niet testen
    > omdat de MySQL die ik gebruik versie 3.23 is subqueries vanaf
    > 4.1 zijn.
    >
    > SELECT groep.name
    > FROM groep
    > WHERE groep.id NOT
    > IN
    > (
    > SELECT DISTINCT groep.id
    > FROM artikel
    > LEFT JOIN subgroep ON artikel.subgroep = subgroep.id
    > LEFT JOIN groep ON subgroep.groep = groep.id
    > )
    >
    > omschrijven volgens "13.2.8.11. Rewriting Subqueries as
    > Joins for Earlier MySQL Versions" is ook trickey


    Nou, dat is in ieder geval een nieuwe invalshoek. Ga ik proberen.
    Bedankt!

    --
    Nico Schuyt
    http://www.nicoschuyt.nl/



Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics