Ausgabe Geburtstag

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

  • Ausgabe Geburtstag

    Hallo! Ich möchte alle Freunde eines Users ausgeben, die in den nächsten 3 Tagen Geburtstag haben. Daten exestieren zum testen, ich bekomme null als Ergebnis und keine Fehlermedlung.
    PHP-Code:
     SELECT
                    f
    .friend_id,
                    
    f.user_id,
                    
    u.user,
                    
    u.birthday,
                    
    uf.file
                FROM friend f
                LEFT JOIN user u ON u
    .id f.user_id
                LEFT JOIN userf uf ON uf
    .user_id f.user_id
                WHERE f
    .friend_id 50 and
                
    u.birthday between NOW() AND (NOW() - INTERVAL 96 HOUR)
                
    GROUP BY f.user_id 
    Zuletzt geändert von der_meier_hans; 08.11.2007, 16:08.

  • #2
    Re: Ausgabe Geburtstag

    Original geschrieben von der_meier_hans
    H... [color=red]nächsten[/color] 3 Tagen Geburtstag haben. ...
    Code:
    ...
    	u.birthday between NOW() AND (NOW() [color=red][b]+[/b][/color] INTERVAL 96 HOUR)
    ...
    Gruss
    H2O

    Kommentar


    • #3
      Leider immer noch "Null" als Ergebnis. Mein u.birthday typ ist date, kann das vielelicht im Vergleichskonflikt mit now() stehen? Danke

      Kommentar


      • #4
        Versuchs mal mit DATE_ADD(NOW(), INTERVAL 3 DAY)
        ich glaube

        Kommentar


        • #5
          War ein Denkfehler! Das Jahr war das Problem! So klappts
          PHP-Code:
                  SELECT
                          f
          .friend_id,
                          
          f.user_id,
                          
          u.user,
                          
          u.birth

                      FROM friends f
                      LEFT JOIN users u ON u
          .id f.user_id
                      WHERE f
          .friend_id $user_id and
                      
          DATE_FORMAT(u.birthday'00-%m-%d'between DATE_FORMAT(NOW(), '00-%m-%d') AND                                                        DATE_FORMATDATE_ADD NOW(), Interval 3 Day), '00-%m-%d')
                      
          GROUP BY f.user_id 
          Zuletzt geändert von der_meier_hans; 08.11.2007, 18:07.

          Kommentar


          • #6
            Ich hoffe, dir ist bewusst, dass das ein Full-Select auf die Tabelle ist und das bei größerem Aufkommen echt tödlich ist?

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Wir kann ich es denn besser lösen?

              Kommentar


              • #8
                Zum Beispiel könntest du das Datum gleich ohne Jahr speichern, dann kannst du die Spalten indizieren und den Query so schneller machen.

                Alternativ kannst du mit
                birthday BETWEEN DATE_SUB(NOW(), INTERVAL 1 DAY) AND DATE_ADD(NOW(), INTERVAL 4 DAY)
                die Datensätze vorher eingrenzen, und mit deiner bisherigen Bedingung die genaue Abfrage gestalten. Was bei vielen Datensätzen schon etwas ausmachen dürfte (auf birthday muss dann natürlich ein Index liegen).

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar

                Lädt...
                X