Ankündigung

Einklappen
Keine Ankündigung bisher.

2 Abfragen miteinander kombinieren

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 2 Abfragen miteinander kombinieren

    Servus zusammen,

    ich habe mir auf meiner Seite eine Suche eingerichtet, funktioniert auch. Es gibt ein Formular, da kann man Suchbegriffe eingeben.

    PHP-Code:
    $suche_nach1 "%{$suchbegriff1}%";
    $suche_nach2 "%{$suchbegriff2}%";
    $suche_nach3 "%{$suchbegriff3}%";
    $suche_nach4 "%{$suchbegriff4}%";

    $suche $db->prepare("SELECT name, id, bemerkung, uhrzeit, level, allebe FROM platzierung WHERE name LIKE ? AND bemerkung LIKE ? OR allebe LIKE ?");
    $suche->bind_param('sss'$suche_nach1$suche_nach2$suche_nach3);
    $suche->execute();
    $suche->bind_result($name $id$bemerkung$uhrzeit$level$allebe);
            while (
    $suche->fetch()) {
                
    $daten[] = (object) array(
    'name'  => $name,
    'id'  => $id,
    'bemerkung'  => $bemerkung,
    'uhrzeit'  => $uhrzeit,
    'level'  => $level,
    'allebe'  => $allebe);
            }
            
    $suche->close(); 
    Jetzt möchte ich noch gerne folgende Suche mit einbeziehen:

    PHP-Code:
    SELECT platzierung.* FROM platzierung LEFT JOIN katalog ON platzierung.ergebnis katalog.ergebnis1 OR platzierung.ergebnis katalog.ergebnis2 WHERE name_katalog ='$suche_nach4' 
    Beide Abfragen für sich funktionieren, aber wie kann ich beide kombinieren?

    EDIT: Hat sich erledigt, habe es selber raus gefunden.

    LG
    Stefan

  • #2
    "Witzig" habe das gleiche Problem, wie hast du das denn gelöst?

    PHP-Code:
    $such_ergebnisse $mysqli->query("SELECT *
                                                FROM 
                                                    texte 
                                                WHERE tags REGEXP '(^|[^0-9])
    $trimmed([^0-9]|$)'
                                                OR 
                                                    erscheinungsdatum = '"
    .$erscheinungsdatum."'
                                                ORDER BY 
                                                    erscheinungsdatum
                                                DESC LIMIT 100"
    ); 
    Der erste Teil funktioniert wie gewünscht, nur "OR" zeigt er nicht an.....

    Kommentar


    • #3
      Fehler suchen, Fehler finden.
      https://php-de.github.io/jumpto/faq/

      Kommentar


      • #4
        Meinst du wegen dem SELECT?
        Das habe ich nur abgekürzt!
        Es geht mir ja um
        PHP-Code:
                OR 
                              
        erscheinungsdatum '".$erscheinungsdatum."' 
        Was nicht funktioniert.

        Kommentar


        • #5
          Nein, meine ich nicht. Welchen Datentyp hat die Spalte und was steht in $erscheinungsdatum?
          Hast du die Abfrage mal in eine SQL Client getestet?

          Kommentar


          • #6
            In der DB Spalte "erscheinungsdatum" steht das Datum (06.07.2020) als Text und im der var $erscheinungsdatum steht ebenfalls das Datum (06.07.2020).
            Das funktioniert auch alles, die Variabel $erscheinungsdatum kann ich ausgeben. Das man das Datum eigentlich anders speichert weiß ich, ist mir aber zu umständlich und für meine zwecke (einfacher Vergleich, keine Berechnung) reicht diese einfache Methode aus.

            Mache ich anstatt "OR" "AND" funktioniert die Ausgabe, aber dann wieder die obere nicht....

            Kommentar


            • #7
              Zeige bitte Tabellenstruktur und Testdaten als SQL-Code. Bei Datenbankproblemen bitte keinen PHP-Code posten, PHP ist hier nicht relevant.

              Kommentar


              • #8
                Datenbankproblem? Verstehe ich nicht, aber gut, hier die Struktur:

                -- Tabellenstruktur für Tabelle `texte`
                --

                CREATE TABLE `texte` (
                `texte_id` int(11) NOT NULL,
                `erstellt_am` varchar(30) NOT NULL,
                `erstellt_von_vorname` text NOT NULL,
                `erstellt_von_nachname` text NOT NULL,
                `erstellt_von_id` text NOT NULL,
                `headline` text NOT NULL,
                `text` text NOT NULL,
                `text_autor_name` text NOT NULL,
                `organisation` text NOT NULL,
                `tags` text NOT NULL,
                `quelle` text NOT NULL,
                `thema` text NOT NULL,
                `textart` text NOT NULL,
                `bewertung` text NOT NULL,
                `erscheinungsdatum` text NOT NULL,
                `kommentar` text NOT NULL,
                `top_artikel` text NOT NULL
                ) ENGINE=InnoDB DEFAULT CHARSET=utf8;



                Und was für Testdaten möchtest du haben?
                Wie gesagt, es funktioniert entweder der erste Teil, wenn ich "OR" benutze, oder der zweite wenn ich "AND" benutze.
                Es handelt sich beim ersten Teil (WHERE tags REGEXP '(^|[^0-9])$trimmed([^0-9]|$)') um den Inhalt des Suchfeldes, beim zweiten um einen Teil der Erweiterten Suche, in diesem Fall nach Datum, es sollen noch weitere Möglichkeiten hinzu kommen.

                Kommentar

                Lädt...
                X