Ergebnis 1 bis 15 von 15

Thema: SQL-Abfrage - Kindtabelle

  1. #1
    Contao-Nutzer
    Registriert seit
    09.01.2010.
    Beiträge
    67

    Standard SQL-Abfrage - Kindtabelle

    Ich möchte auf der Detailseite eine Liste mit Daten aus einer Kindtabelle ausgeben. Könnte mit jemand verraten, wie die entsprechende SQL-Abfrage für den hierzu benötigten Filter lauten müsste?

    Vielen Dank schon mal vorweg.


    Gruß Karl

  2. #2
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo Karl,
    mal grob gesagt: Du Filterst die Kind Elemente mit Hilfe des Alias von dem Item, was du in der Detailseite eh schon darstellst.

    Hier mal eine Abfrage, wie ich die nutze bei einem translatedtext (also Mehrsprachig):
    Code:
    SELECT id 
    FROM mm_kind_produkt 
    WHERE pid IN (
      SELECT item_id 
      FROM tl_metamodel_translatedtext 
      WHERE
      value={{param::get?name=auto_item}})
    Du müsstest da eigentlich nur die Tabellen anpassen für dich.

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

  3. #3
    Contao-Nutzer
    Registriert seit
    09.01.2010.
    Beiträge
    67

    Standard

    Hallo MacKP,

    vielen Dank zunächst. Klingt nachvollziehbar. Funktioniert aber leider nicht:

    Code:
    SELECT id 
    FROM mm_kind 
    WHERE pid IN (
      SELECT item_id 
      FROM mm_papa 
      WHERE
      value={{param::get?name=auto_item}})
    Fehlermeldung

    Fatal error: Uncaught exception Exception with message Query error: Unknown column 'item_id' in 'field list' (SELECT id FROM mm_kind WHERE pid IN ( SELECT item_id FROM mm_papa WHERE value='berlin')) thrown in system/modules/core/library/Contao/Database/Statement.php on line 283

    Hast Du eine Idee, was ich falsch gemacht habe?


    Liebe Grüße
    Karl

  4. #4
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo Karl S.,
    du musst bei dir einfach:

    Code:
    SELECT id 
    FROM mm_kind 
    WHERE pid IN (
      SELECT id 
      FROM mm_papa 
      WHERE
      value={{param::get?name=auto_item}})
    Also nur SELECT id, da bei dir die Spalte an der Stelle id heißt.
    Bei mir wars eben wegen Übersetzungen item_id ;-)

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

  5. #5
    Contao-Nutzer
    Registriert seit
    09.01.2010.
    Beiträge
    67

    Standard

    Abermals Dank, aber das geht leider auch nicht:

    Fatal error: Uncaught exception Exception with message Query error: Unknown column 'value' in 'where clause' (SELECT id FROM mm_kind WHERE pid IN ( SELECT id FROM mm_papa WHERE value='berlin')) thrown in system/modules/core/library/Contao/Database/Statement.php on line 283

    Weiterhin um Rat dankbar


    Gruß Karl

  6. #6
    Contao-Nutzer
    Registriert seit
    09.01.2010.
    Beiträge
    67

    Standard

    MacKP,

    Du bist mein Held des Tages... vielen, vielen Dank.

    »alias« statt »value«... daran hat’s gelegen...

    Code:
    alias={{param::get?name=auto_item}})
    Viele Grüße


    Karl

  7. #7
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    öh.. Kannst du mal nen Screen schicken von den beiden Tabellen in phpmyadmin?
    So das man 1. die Struktur und 2. auch wenigstens einen Eintrag sehen kann?

    Viele Grüße

    Ah, ok xD
    Für sowas ist es immer gut, wenn man in phpmyadmin mal schaut, wie die Tabellen aufgebaut sind. Dann sieht man sowas schneller selbst und braucht nicht so wild rumraten ;-)
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

  8. #8
    Contao-Nutzer
    Registriert seit
    09.01.2010.
    Beiträge
    67

    Standard

    OK, soweit so gut... funktioniert bestens... jetzt würde ich gerne noch bei der Listen-Darstellung der Daten aus der Kindtabelle jeweils den Wert eines Text-Feldes »name« aus dem pid-Datensatz der Elterntabelle anzeigen. Welches Template müsste man dazu wie verändern? Geht das, und wenn ja: wie?

    Für die Hilfe bereits ein herzliches Dankeschön vorweg.


    Karl
    Geändert von Karl S. (27.06.2014 um 07:15 Uhr)

  9. #9
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hmm du hast ja normalerweise in der URL den Alias vom Elternelement um die Liste der Kinder anzuzeigen. Also müsstest du nur ein Listenmodul vom Elternelement ausgeben, was auf diese URL reagiert. Oder brauchst du das da anders?

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

  10. #10
    Contao-Nutzer
    Registriert seit
    09.01.2010.
    Beiträge
    67

    Standard

    Wenn ich nur die Daten der Kindtabelle aufliste habe ich keinen Alias der Elterntabelle in der URL. Alle Kinder haben ja in der Summe viele Eltern. Ich will aber bei jedem »Kind« den Namen vom »Papa« mit ausgeben.
    Geändert von Karl S. (27.06.2014 um 09:41 Uhr)

  11. #11
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Ungetesteter Pseudocode aus dem Gedaechtnis, sollte dir aber die Richtung vermitteln:
    PHP-Code:
    // Annahme: wir sind in metamodel_prerendered.html5 von "mm_kind".
    $kind $arrItem['raw'];
    $papas = \MetaModels\Factory::getByTableName('mm_papas');

    $papa $papas->findById($kind['pid']);

    echo 
    $papa->parseAttribute('name'); 
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  12. #12
    Contao-Nutzer
    Registriert seit
    09.01.2010.
    Beiträge
    67

    Standard

    Danke für den Tipp xtra,

    aber ich bekomme es mit meinen doch recht bruchstückhaften Code-Kenntnissen nicht hin. Kann mir jemand diesbezüglich etwas detaillierter unter die Arme greifen?

    Gruß Karl

  13. #13
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo Karl S.,
    wie sieht denn dein Template aktuell aus und was funktioniert da nicht?
    Ist immer etwas schwierig so auf dem Trockenen ohne genaue Infos sowas zusammenzubasteln...

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

  14. #14
    Contao-Nutzer
    Registriert seit
    09.01.2010.
    Beiträge
    67

    Standard

    Ich bekomme folgende Fehlermeldung, egal an welche Stelle ich die Zeilen von xtra reinkopiere:

    Fatal error: Call to undefined method MetaModels\Factory::getByTableName() in /.../domain.de/templates/metamodel_prerendered_xtra.html5 on line 12

  15. #15
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Sorry, war wie gesagt aus dem Gedaechtnis... bitte in Zukunft die Interfaces von MetaModels lesen, dann haettest es gefunden.

    PHP-Code:
    // Annahme: wir sind in metamodel_prerendered.html5 von "mm_kind". 
    $kind $arrItem['raw']; 
    $papas = \MetaModels\Factory::byTableName('mm_papas'); 
    $papa $papas->findById($kind['pid']); 
    echo 
    $papa->parseAttribute('name'); 
    So sollte es gehen.
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •