Bitte nicht Sortieren!!!

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

  • Bitte nicht Sortieren!!!

    Hallo Leute,

    ich habe da ein etwas merkwürdiges Problem:

    Ich lasse aus einer DB nach verschiedenen Kriterien eine Liste mid IDs erzeugen.
    Diese ID-Reihenfolge lasse ich dann per SELECT * FROM $db WHERE id IN($meine_ids) aus einer anderen DB selectieren.
    Nun das Komische, bei der Ausgabe werden mir die IDs numerisch sortiert. Aber genau das soll eben nicht der Fall sein, sondern er soll sie mir so auslesen, in der Reihenfolge der IDs is $meine_ids.
    (sieht z.B. so aus: 45,186,13,85,66 usw...)

    Wie sage ich meiner Select-Anweisung, dass die IDs bitte nicht sortiert werden sollen???

    Ich weis, das gehört eigentlich mehr ins SQL Forum, aber ich rufe mein SELECT ja mit mysql_query() auf - und das ist PHP! Also, bitte nicht hauen.

    Thanx, Andi

  • #2
    naja, er sortiert sie nicht, sondern gibt sie aus, so wie sie in der datenbank gespeichert sind, und da nun bei jedem neueintrag der eben hintendrangehängt wird (falls nicht gelöscht ist) wird id incremetiert. so entsteht halt die sortierung. :/
    meine Projekte bestaunen: http://www.kleiza.de

    Kommentar


    • #3
      Nun gut, aber wie löse ich nun das Problem?

      Es muss doch die Möglichkeit geben dem Select eine Sortierung auzuzwinden, die nicht einem der Felder in der Tabelle entspricht.

      Geht so was wie SELECT... WHERE id IN($meine_ids) ORDER BY $meine_ids ?

      Gruß, Andi

      Kommentar


      • #4
        durchaus.

        wenn meine id ohne hochkommate aufgebaut sind. also : $meine_ids="1,2,3,4,5"

        dann gehts so:

        $meine_idshoch="'".$meine_ids."'";
        SELECT *,locate(concat(',',id,','),concat(',',$meine_idshoch,',')) as pos FROM tabelle WHERE id in ($meine_ids) order by pos
        meine Projekte bestaunen: http://www.kleiza.de

        Kommentar


        • #5
          Danke, cool - ich werd es testen.

          Habe mit mittlerweile anders geholfen.
          Die IDs lasse ich bereits in einer Schleife aus $db_content nach Suchbegriffen lesen. Danach würde ich den Rest aus $db_content holen eben in der Reihenfolge der IDs.

          Die zweite DB-Abfrage kann ich mir aber schenken- hole mir nämlich jetzt alles schon bei der ersten Abfrage in ein Array. Und die Reihenfolge des Arrays wird ja ohne fremdes Zutun nicht verändert.

          Aber es ist mit Sicherheit schneller schon die Richtige Reihenfolge so vom DB-Server liefern zu lassen, alss dass dann mit PHP noch mal zu ordnen. Da ich aber sowieso schon bei der ersten Abfrage auf die gewünschte DB zugreife, wäre es doch unsinnig dann ein zweites mal draufzuzugreifen, nur um noch mal den Rest Content zu den IDs zu holen.

          Ich hoffe einer versteht das, was ich schreibe

          Dank & Gruß, Andi

          Kommentar


          • #6
            ist schon ein wenig crazy ...

            du kannst ja auch noch ne spalte einfügen, die nur für die sortierung da ist. ich hab so das gefühl, dass du eh alles manuell sortierst...

            wenn du die spalte erstellst und manuell oder automatisch zahlen zuweist, kannst du auch sortieren.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Ja das wäre auch möglich, stimmt - alles nach der sortierten Reihenfolge in ein Tabelle packen, aber das wäre ja noch eine Zusätzlich DB-Abfrage.
              Ander wäre es, das nach jedem Content-update die Tabelle neu erzeugt wird nd die User dann immer auf eine aktuelle, sortierte Tabelle zugreifen.

              Überlege ich noch mal, habe ja jetzt erst mal eine Lösung gefunden

              Grüße, Andi

              Kommentar


              • #8
                kannst ja auch datum und uhrzeit einfügen und danach sortieren, wenn es einfacher ist...

                wonach sortiert du eigentlich?
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  komm irgendwie mit der diskussion nicht mehr mit ? was für eine weitere spalte ?
                  meine Projekte bestaunen: http://www.kleiza.de

                  Kommentar


                  • #10
                    die hier ....


                    Original geschrieben von Abraxax
                    du kannst ja auch noch ne spalte einfügen, die nur für die sortierung da ist. ich hab so das gefühl, dass du eh alles manuell sortierst...
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Es gibt zwei Tabellen, eine mit einer Menüstruktur, die andere mit Seiten-Inhalt.

                      Da der Seiteninhalt nicht syncron zur Menüstruktur angelegt ist - mal wurde in Menü 5 zuerst der Content eingepflegt, mal in Menü 2 etc. - kann ich halt nicht nach der ID des Contents sortieren.
                      Wenn jetzt jemand in der Suchmaske ein Suchbegriff eingibt, sollen die gefundenen Seiten aber nach der Menüstruktur sortiert ausgegeben werden.

                      Das war das ganze Problem.

                      Habs halt jetzt ein bisschen performance-unfreundlich gemacht, aber es funktioniert.

                      Generiere also zunächst meine Menüstruktur und frage bei bei jedem Eintrag die Content-Tabelle, ob die verknüpfte Seite den Suchbgriff enthält. Wenn dem so ist, wir die Headline und ID der Seite in ein Array gespeichert. Dann brauche ich nur noch das Array auszugeben.

                      Wenns einen Resourcen-schonerenden Weg gibt, nur her damit. Auf meine Anfrage, wie man das mit LEFT JOIN am besten regeln kann (habe ich NULL Ahnung von) habe ich bislang keine erfolgreich Nachricht bekommen.

                      Grüße, Andi

                      Kommentar

                      Lädt...
                      X