+ Antworten
Ergebnis 1 bis 7 von 7

Thema: GELÖST: SQL Abfrage zu Jooma!-Query

  1. #1
    War schon öfter hier Avatar von Berndi
    Registriert seit
    20.02.2013
    Beiträge
    194
    Bedankte sich
    37
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard GELÖST: SQL Abfrage zu Jooma!-Query

    Hallo Experten,

    ich versuche jetzt schon seit Stunden folgende SQL-Abfrage in ein Joomla!-Query zu überführen, scheitere dabei aber kläglich.

    SQL:
    Code:
    SELECT DISTINCT a.dtstart, a.summary, a.dtend
    FROM `#__tabelle1` as a, `#__tabelle2` as b, `#__tabelle3` as c
    WHERE c.evdet_id = a.evdet_id
    AND c.name = "bla" 
    AND c.value = 1
    AND b.state > 0
    Mein letzter Versuch sah in etwa so aus:
    Code:
    $query
      ->SELECT(array('a.dtstart', 'a.summary', 'a.dtend'))
      ->FROM($db->quoteName('#__tabelle1', 'a'), $db->quoteName('#__tabelle2', 'b'), $db->quoteName('#__tabelle3', 'c'))
      ->WHERE($db->quoteName('c.name') . ' = "bla" AND ' . $db->quoteName('c.value') . ' = 1 AND ' . $db->quoteName('b.state') . ' > 0')
    ;
    Das ganze endet in einem Fehler, dass die Spalte c.name nicht vorhanden sei.

    Kann mir da bitte jemand "zur Hand" gehen?

    Gruß,
    Berndi
    Geändert von Berndi (14.03.2017 um 17:07 Uhr) Grund: Problem wurde gelöst
    -----------------------------------------------------------------------------------
    Merke: Planung ist der Ersatz des Zufalls durch den Irrtum.

  2. #2
    Gehört zum Inventar
    Registriert seit
    06.03.2013
    Ort
    /dev/random
    Beiträge
    5.962
    Bedankte sich
    129
    Erhielt 2.221 Danksagungen
    in 2.101 Beiträgen

    Standard

    Code:
    $db = JFactory::getDBO();
    $query = $db->getQuery(true);
    $fieldlist = $db->qn(array('a.dtstart', 'a.summary', 'a.dtend'));
    $fieldlist[0] = 'DISTINCT ' . $fieldlist[0]; 
    $query->select($fieldlist);
    $dbs=array($db->quoteName('#__tabelle1', 'a'), $db->quoteName('#__tabelle2', 'b'), $db->quoteName('#__tabelle3', 'c'));
    $query->from($dbs);
    $query->where($db->quoteName('c.evdet_id')." = ".$db->quoteName('a.evdet_id')." AND ".$db->quoteName('c.name')." = ".$db->quote('bla')." AND ".$db->quoteName('c.value')." = ".$db->quote('1')." AND ".$db->quoteName('b.state')." > ".$db->quote('0'));
    $db->setQuery($query);
    $results = $db->loadObjectList();
    Edit: From noch modifiziert, muss array sein.

    Oder einfach
    Code:
    $db = JFactory::getDBO();
    db->SetQuery("SELECT DISTINCT a.dtstart, a.summary, a.dtend FROM `#__tabelle1` as a, `#__tabelle2` as b, `#__tabelle3` as c WHERE c.evdet_id = a.evdet_id AND c.name =  'bla' AND c.value = 1 AND b.state > 0");
    $results = $db->loadObjectList();
    Und es wäre nett, wenn du die vollständige Fehlermeldung posten würdest, die ausgegeben wird.
    Ansonsten hier mal einlesen
    https://docs.joomla.org/Selecting_data_using_JDatabase
    https://docs.joomla.org/Inserting,_U...sing_JDatabase
    https://api.joomla.org/cms-3/classes...baseQuery.html
    Geändert von FINWICK (13.03.2017 um 21:16 Uhr)
    Gruß FINWICK
    ↶ Danke Button nutzen, wenn es geholfen hat - Kein Support via PN - Tipps & Tricks - JPlugger - URL Shortener - NDE

  3. Erhielt Danksagungen von:


  4. #3
    War schon öfter hier Avatar von Berndi
    Registriert seit
    20.02.2013
    Beiträge
    194
    Bedankte sich
    37
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    Wenn es so einfach wäre....

    Gleicher Fehler.
    Sonst irgendwelche Ideen?
    -----------------------------------------------------------------------------------
    Merke: Planung ist der Ersatz des Zufalls durch den Irrtum.

  5. #4
    Gehört zum Inventar
    Registriert seit
    06.03.2013
    Ort
    /dev/random
    Beiträge
    5.962
    Bedankte sich
    129
    Erhielt 2.221 Danksagungen
    in 2.101 Beiträgen

    Standard

    Bist du sicher, dass die Spalte Name in #__tabelle3 gibt. Poste doch mal die Struktur der drei Tabellen.
    Gruß FINWICK
    ↶ Danke Button nutzen, wenn es geholfen hat - Kein Support via PN - Tipps & Tricks - JPlugger - URL Shortener - NDE

  6. #5
    Gehört zum Inventar
    Registriert seit
    17.09.2008
    Ort
    München
    Beiträge
    7.822
    Bedankte sich
    758
    Erhielt 2.537 Danksagungen
    in 2.204 Beiträgen

    Standard

    HTML-Code:
    SELECT DISTINCT a.dtstart, a.summary, a.dtend
    FROM `#__tabelle1` as a, `#__tabelle2` as b, `#__tabelle3` as c
    WHERE c.evdet_id = a.evdet_id
    AND c.name = "bla" 
    AND c.value = 1
    AND b.state > 0
    Funktioniert denn das hier? Wird hier die Spalte c.name gefunden? Was willst du mit dem DISTINCT auf a.dstart erreichen?
    Soll pro Tag nur ein Event gefunden werden?
    Wie und wo ist denn die Tabelle b verknüpft, die hat ja keinerlei Beziehung zu den anderen Tabellen?

  7. #6
    War schon öfter hier Avatar von Berndi
    Registriert seit
    20.02.2013
    Beiträge
    194
    Bedankte sich
    37
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    @firstlady
    Ja, das funktioniert einwandfrei
    c.name wird gefunden und existiert auch.
    DISTINCT bezieht sich bei diesem Aufruf auf alle drei Auswahlfelder, wobei der wichtigste a.summary ist.

    Tabelle B wird benötigt um b.state abzufragen

    @FINWICK
    Struktur folgt, komme gerade nicht an die Datenbank.
    (Werde sie dann einfach hier im Artikel einfügen)
    -----------------------------------------------------------------------------------
    Merke: Planung ist der Ersatz des Zufalls durch den Irrtum.

  8. #7
    War schon öfter hier Avatar von Berndi
    Registriert seit
    20.02.2013
    Beiträge
    194
    Bedankte sich
    37
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    Zitat Zitat von FINWICK Beitrag anzeigen
    Oder einfach
    Code:
    $db->SetQuery("SELECT DISTINCT a.dtstart, a.summary, a.dtend FROM `#__tabelle1` as a, `#__tabelle2` as b, `#__tabelle3` as c WHERE c.evdet_id = a.evdet_id AND c.name =  'bla' AND c.value = 1 AND b.state > 0");
    ...was des Rätsels Lösung wäre.

    Vielen Dank!
    Das klappt.

    Gruß,
    Berndi
    -----------------------------------------------------------------------------------
    Merke: Planung ist der Ersatz des Zufalls durch den Irrtum.

+ Antworten

Lesezeichen

Berechtigungen

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