Brauche Hilfe für SQL Abfrage

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

  • Brauche Hilfe für SQL Abfrage

    Hallo,

    nun suche ich seid Montag eine lösung und finde einfach keine.
    Mein Problem. Ich möchte bestimmte Daten aus einer Tabelle abfrage. Eine ID und URL ist für die Abfrage vorhande und gesucht wird der passende Eintrag für die URL. In der Tabelle befinden sich jeweils 10 Einträge.. immer eine URL und dazu ein Eintrag.

    Nun möchte ich für URL: [www.url.de] den Eintrag ausgeben lassen.
    Ich habe es so probiert...

    $ergeb = mysql_query ("select url1, linktext1, url2, linktext2, url3, linktext3, url4, linktext4, url5, linktext5, url6, linktext6, url7, linktext7, url8, linktext8, url9, linktext9, url10, linktext10 from `link` where `id` = '118605690323801' ORDER BY linktext1, linktext2, linktext3, linktext4, linktext5, linktext6, linktext7, linktext9, linktext9, linktext10 and `url1` = 'http://www.url.de' and `url2` = 'http://www.url.de' and `url3` = 'http://www.url.de' and `url4` = 'http://www.url.de' and `url5` = 'http://www.url.de' and `url6` = 'http://www.url.de' and `url7` = 'http://www.url.de' and `url8` = 'http://www.url.de' and `url9` = 'http://www.url.de' and `url10` = 'http://www.url.de'");

    $zeili=mysql_num_rows($ergeb);
    if ($zeili != 0) {
    $row = mysql_fetch_row($ergeb);

    $linktext = $row[0];
    }

    nun wird mir aber alles ausgegeben..
    Gehe ich davon aus.. das die gesuchte URL mit Eintrag auf Position 2 [linktext2] steht.. und möchte nur diese haben... alle anderen müßte aber trotzdem geprüft werden da ich nicht weiß.. wo welche beim setzen der Information eingetragen wird..

    Muß ich die Abfrage in einer Schleife laufen lassen? Ich habe einfach keine Idee mehr...

    Danke für Eure Hilfe...

  • #2
    nun suche ich seid Montag ...
    www.seit-seid.de

    select url1, linktext1, url2, linktext2, url3, linktext3 ...
    sieht schon mal nach schlechtem design aus. was steht in den spalten? warum gibt es 10 durchnummerierte spalten?
    ORDER BY linktext1, linktext2, ..., linktext10 and `url1` = 'http://www.url.de' and ...
    sag bloß du weißt, was du da zusammengeschrieben hast? was soll das werden? wie soll diese sortier-anweisung funktionieren?

    erkläre erst mal, was du tust und wofür das gut sein soll.

    Kommentar


    • #3
      ok..

      ich möchte einen automatischen Linktausch anbieten.

      Das heißt, Webmaster A kommt und meldet sich mit seiner Seite an und stellt 10 Linkplätze.
      Nun kommt Webmaster B und trägt sich mit seiner Seite bei Webmaster A ein mit seiner URL und seinem Linktext. Somit sind bei Webmaster A nur noch 9 Plätze frei. Auf dauer kommen auch andere Webmaster und tragen sich mit ihren Seiten bei Webmaster A ein ect.

      Nun möchte ich eine Funktion anbieten das z.b. Webmaster B (und andere) die Möglichkeit hat seinen Textlink zu editieren.

      Da diese Informationen in der Tabelle von Webmaster A stehen der 10 Plätze anbieten.. müssen bei einer Abfrage diese durchlaufen werden.. um zu ermitteln.. an welcher Stelle die Informationen von Webmaster B zu finden ist.

      Folgende Daten von Webmaster B habe ich für eine Abfrage.. seine URL! Linktext soll ermittelt werden.

      hier meine tabelle..

      id <-- Webmaster A
      email <-- Webmaster A
      url <-- Webmaster A
      linktext <-- Webmaster A

      //und seine Linkpartner//

      url1 <-- Webmaster B
      linktext1 <-- Webmaster B
      url2 <-- Webmaster C
      linktext2 <-- Webmaster C usw.
      url3
      linktext3
      url4
      linktext4
      url5
      linktext5
      url6
      linktext6
      url7
      linktext7
      url8
      linktext8
      url9
      linktext9
      url10
      linktext10

      Ich bin kein PHP und Datenbank Profi... sonst wäre ich net hier und würde fragen... ich hoffe, dass meine Erklärung das Problem ein wenig besser beschreibt.

      Gruss

      Kommentar


      • #4
        Einfach eine zweite Tabelle

        webmaster_id | linkpartner_id

        und fertig

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

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

        Kommentar


        • #5
          so wie ich es jetzt habe mit einer tabelle funktioniert die abfrage nicht?

          Kommentar


          • #6
            Klar tut sie das, mit einem SELECT über 10 Spalten, der an Länge dann wohl von hier bis China reicht und der sich zudem nicht vernünftig optimieren lässt und demnach wohl in Full-Select-Scans ausartet, was im live-Betrieb ziemlich tödlich ist.

            Noch eine dritte Spalte "pos" hinten dran würde ich machen, der innerhalb einer webmaster_id die Position des Linkpartners anzeigt.

            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
              Super... Danke.

              mit einer zweiten Tabelle habe ich es hinbekommen. Nun funktioniert alles bestens.
              Eine Frage habe ich noch.. wie kann ich eine Tabelle abfragen ob Daten vorhanden sind oder nicht? Ich möchte nicht abfrage was für Daten... nur ob welche da sind oder nicht...

              Gruss

              Kommentar


              • #8
                kommt doch auf gleiche raus, du musst dir ja nicht alle Daten liefern lassen und erst recht nicht ausgeben lassen

                entweder prüfst du SELECT ID WHERE xyz LIMIT 1
                oder SELECT COUNT(ID) where xyz

                ersteres dürfte idr. schneller sein.
                letzteres liefert dir dafür die anzahl aller DS die dem where entsprechen. Kannst du natürlich auch mit nem LIMIT versehen.

                Nächstes mal suche, die Frage ist wirklich nicht neu.

                Kommentar

                Lädt...
                X