Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbankabfrage Problem

Einklappen

Neue Werbung 2019

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

  • kunbsi
    hat ein Thema erstellt Datenbankabfrage Problem.

    Datenbankabfrage Problem

    Hallo,
    ich steh auf dem Schlauch und brauche kurz Eure Hilfe!
    Folgendes Problem:
    aus einer SQL Datenbank möchte ich die Kalenderwochen auslesen.
    In der Datenbank gespeichert sind die Wochentage mit einer Spalte kw, die die Kalenderwoche angibt.

    Dazu habe ich folgende SQL-Abfrage:
    PHP-Code:
    SELECT * FROM tab WHERE kw LIKE '$woche' ORDER BY id LIMIT 21 
    Die '$woche' ist ich die aktuelle Kalenderwoche, die ich mit
    PHP-Code:
     $woche = date("W"); 
    bekomme.

    Leider hat mein Ergebnis die falsche Sortierung.

    Wie muss ich die Abfrage ändern um die aktuelle Woche auszugeben und die zwei Folgewochen?

    Vielen Dank für Eure Hilfe

  • hellbringer
    antwortet
    Zitat von kunbsi Beitrag anzeigen
    Wenn ich bei PHPmyadmin Tabellestruktur aufrufe kommt das oben angegebene.
    Ich bin mir nicht sicher was du jetzt wirklich meinst.
    Wenn du noch in der Lernphase bist, solltest phpMyAdmin erstmal komplett beiseite lassen (sowie jedes andere Klickibunti-Tool) und nur mit SQL alleine arbeiten. Denn mir erscheint es so, als hättest du diesen Schritt übersprüngen und ruderst deswegen unbeholfen herum. Das ist bei der Problemlösung nicht gerade hilfreich und macht alles nur schwieriger und umständlicher.

    Einen Kommentar schreiben:


  • hausl
    antwortet
    In dem CREATE ist nirgends was von einer "Woche" ersichtlich. Dh es muss die Falsche sein.

    Einen Kommentar schreiben:


  • tk1234
    antwortet
    Zitat von kunbsi Beitrag anzeigen
    Wenn ich bei PHPmyadmin Tabellestruktur aufrufe kommt das oben angegebene.
    Ich bin mir nicht sicher was du jetzt wirklich meinst.
    phpMyAdmin hat eine Exportfunktion, damit kannst du die Struktur sowie die Daten exportieren und das Ergebnis dann hier posten (Daten ggf. kürzen und anonymisieren).

    Einen Kommentar schreiben:


  • kunbsi
    antwortet
    Wenn ich bei PHPmyadmin Tabellestruktur aufrufe kommt das oben angegebene.
    Ich bin mir nicht sicher was du jetzt wirklich meinst.

    Tut mir Leid
    Vielen Dank

    Einen Kommentar schreiben:


  • hellbringer
    antwortet
    Gibts jetzt mal eine vollständige Tabellenstruktur, auf deren Basis man Hilfestellung geben kann? Am besten, nachdem du #9 abgearbeittet hast und nicht überall sinnlos VARCHAR verwendest.

    Warum muss der Thread, der eine einfache Frage beinhaltet, so ausarten, weil du unkooperativ bist?

    Einen Kommentar schreiben:


  • kunbsi
    antwortet
    okay vielen Dank,
    das mit dem Jahresübergang löse ich separat mit if else (hat auf jeden Fall dieses mal Funktioniert)

    Mit BETWEEN habe ich auch überlegt - nur bin ich mir nicht sicher, wie ich den Zeitraum definieren kann.
    Welche Möglichkeiten gäbe es denn dafür?

    Einen Kommentar schreiben:


  • tk1234
    antwortet
    Zitat von kunbsi Beitrag anzeigen
    Zu dem LIKE:

    wenn ich LIKE gegen ein = tausche zeigt er mir nur die jeweilige Woche an.
    Ich brauche aber die Woche und die folgenden zwei Wochen
    Daran ändert auch ein LIKE nichts, da brauchst du schon ein BETWEEN o.ä. (wobei der Jahresübergang noch gesondert berücksichtigt werden müsste)

    Einen Kommentar schreiben:


  • tk1234
    antwortet
    Nach was soll den sortiert werden? Und nein, die ID taugt zum Sortieren nicht.

    Zitat von kunbsi Beitrag anzeigen
    […]
    2 time varchar(80) latin1_swedish_ci Ja NULL
    3 kw varchar( latin1_swedish_ci Ja NULL […]
    Warum speicherst du eine Zeit nicht als Zeit (also Type TIME) und eine Kalenderwoche nicht als Zahl (TINYINT)? Und als Kodierung solltest du unbedingt utf8 verwenden (nicht nur in der Datenbank sondern überall)!

    Einen Kommentar schreiben:


  • kunbsi
    antwortet
    Zu dem LIKE:

    wenn ich LIKE gegen ein = tausche zeigt er mir nur die jeweilige Woche an.
    Ich brauche aber die Woche und die folgenden zwei Wochen

    Einen Kommentar schreiben:


  • hellbringer
    antwortet
    Du solltest schon die Tabellenstruktur posten, auf die sich die Abfrage bezieht.

    Als Alternative kannst du auch ein Beispiel auf http://sqlfiddle.com/ zusammen stellen und hier verlinken.

    Einen Kommentar schreiben:


  • kunbsi
    antwortet
    PHP-Code:
    --
    -- 
    Table structure for table `tab`
    --

    CREATE TABLE IF NOT EXISTS `tab` (
      `
    id` int(11) NOT NULL AUTO_INCREMENT,
      `
    name` varchar(50) DEFAULT NULL,
      `
    comments` varchar(50) DEFAULT NULL,
      `
    replace` varchar(50) NOT NULL,
      
    PRIMARY KEY (`id`)
    ) 
    ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

    --
    -- 
    Dumping data for table `tab`
    --

    INSERT INTO `subjects` (`id`, `name`, `comments`, `replace`) VALUES
    (1, 'Physics', 'Interesting', 'Pendulum'),
    (
    2, 'Chemistry', 'Not for me', 'h2so4'),
    (
    3, 'Maths', 'Its Goood', 'Algorithms'),
    (
    4, 'Economic', 'Never wanna learn', 'blogs'); 
    Dazu wurde die Spalte kw hinzugefügt.
    Der Rest ist gewachsen und der Inhalt ist auch anders

    Einen Kommentar schreiben:


  • hellbringer
    antwortet
    Zitat von kunbsi Beitrag anzeigen
    Was wäre denn besser als LIKE?
    Die Frage ist, warum du überhaupt LIKE verwendest. LIKE hat doch einen sehr speziellen Nutzen. Was sind deine Gedanken dahinter? Ich hoffe doch, dass du dir Gedanken darüber machst, was du schreibst, und nicht einfach per Zufall irgendwelche Dinge durcheinander wirfst.

    Zitat von kunbsi Beitrag anzeigen
    # Name Typ Kollation Attribute Null Standard Kommentare Extra
    1 idPrimärschlüssel int(11) Nein kein(e) AUTO_INCREMENT
    2 time varchar(80) latin1_swedish_ci Ja NULL
    3 kw varchar( latin1_swedish_ci Ja NULL
    4 name varchar(80) latin1_swedish_ci Ja NULL
    5 comments varchar(80) latin1_swedish_ci Ja NULL
    6 replace varchar(80) latin1_swedish_ci Ja NULL
    7 craft varchar(80) latin1_swedish_ci Ja NULL
    8 solo varchar(80) latin1_swedish_ci Ja NULL
    9 roxy varchar(80) latin1_swedish_ci Ja NULL


    Oder doch - es hat mit der Tabellstruktur doch geklappt!
    Nein, das ist keine SQL-Code und somit wertlos.

    Poste bitte den SQL-Code, mit dem du die Tabelle erstellt hast.

    Einen Kommentar schreiben:


  • kunbsi
    antwortet
    # Name Typ Kollation Attribute Null Standard Kommentare Extra
    1 idPrimärschlüssel int(11) Nein kein(e) AUTO_INCREMENT
    2 time varchar(80) latin1_swedish_ci Ja NULL
    3 kw varchar( latin1_swedish_ci Ja NULL
    4 name varchar(80) latin1_swedish_ci Ja NULL
    5 comments varchar(80) latin1_swedish_ci Ja NULL
    6 replace varchar(80) latin1_swedish_ci Ja NULL
    7 craft varchar(80) latin1_swedish_ci Ja NULL
    8 solo varchar(80) latin1_swedish_ci Ja NULL
    9 roxy varchar(80) latin1_swedish_ci Ja NULL


    Oder doch - es hat mit der Tabellstruktur doch geklappt!

    Einen Kommentar schreiben:


  • kunbsi
    antwortet

    Vielen Dank für die Antwort.

    DIe Tabellenstruktur hier einzufügen bekomme ich irgendwie nicht hin.

    Was wäre denn besser als LIKE?

    Einen Kommentar schreiben:

Lädt...
X