Abfrage in einer Funktion vereinfachen?

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

  • #16
    Original geschrieben von kari_w
    Nur die frage ist ist es denn möglich das es funktioniert?
    bei deiner bisherigen Formulierung kann IMHO keiner das beantworten

    Nun, du hast 3 Bedingungen, was soll denn nun geprüft werden?

    [ ] A OR B OR C
    [ ] A AND (B OR C)
    [ ] A AND B AND C
    [ ] was anderes

    Bitte ankreuzen, oder kurz und klar in der Form formulieren

    Kommentar


    • #17
      Original geschrieben von kari_w
      Sorry ich kann nicht editieren.
      OffTopic:
      nein, du darfst nicht mehr, weil du mehrfach gezeigt hast, dass du mit so einer funktion nicht verantwortlich umgehen kannst.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #18
        Ich weiss ich weiss meine Beschreibungen sind nicht der Hit.

        WHERE e.aid IS NULL OR c.cid > e.aid OR c.cid > e.bid

        Funktioniert wunderbar! Danke euch beiden für die wirklich tolle Hilfe!!
        Was bewirkt denn dieses IS NULL genau?

        Sorry nochmals für die komplizierte Frage!

        Ich habe zusätzlich noch ne neue. Sollte ich ein neues Thema damit eröffnen sagt es doch bitte.

        Hoffe diesmal ist es etwas besser erklärt

        Ich habe folgende SELECT Abfrage:
        b.cid, c.cid, c.pid, c.title AS t1 FROM b1 b LEFT JOIN c1 c ON (b.cid=c.cid)

        Nun liest er mir die drei felder aus wo b.cid=c.cid

        Soweit sogut. Nun habe ich t1 als Titel wo b.cid mit c.cid übereinstimmt.
        c.pid ist auch eine ID und entspricht ebenfalls einer andere c.cid

        Nun stellt sich mir die Frage ob ich eine neue Abfrage machen muss wo dann die bedingung ... title WHERE cid=pid(Von der vorherigen abfrage) oder ob ich dies direkt in der selben Abfrage machen kann das ich dann einfach t1 und t2 zru verfügung habe.

        Gruss

        kari_w

        Kommentar


        • #19
          Original geschrieben von kari_w
          Was bewirkt denn dieses IS NULL genau?
          Naja, wenn ich das lese, drängt sichmir unweigerlich der Gedanke auf, dass damit vielleicht Datensätze zurückgeliefert werden, bei den das Feld e.aid den Wert NULL hat..

          Hoffe diesmal ist es etwas besser erklärt
          Nein
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #20
            Original geschrieben von mrhappiness
            Naja, wenn ich das lese, drängt sichmir unweigerlich der Gedanke auf, dass damit vielleicht Datensätze zurückgeliefert werden, bei den das Feld e.aid den Wert NULL hat..

            Nein
            1. Hmm das schona ber ich dachte hat noch allgemein ne weitere bedeutung aber ok

            2. Hmm wenn es kurse geben würde wie man erklärt wär sicher was feines Was ist denn da nicht in Ordnung bez wo stellt sich da die Frage?

            Gruss

            kari_w

            Kommentar


            • #21
              Original geschrieben von kari_w
              1. Hmm das schona ber ich dachte hat noch allgemein ne weitere bedeutung aber ok
              man könnte das handbuch zu rate ziehen und sich vergewissern...

              2. Hmm wenn es kurse geben würde wie man erklärt wär sicher was feines
              ja
              Was ist denn da nicht in Ordnung bez wo stellt sich da die Frage?
              was du willst?
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #22
                Hallo erneut

                Handbuch: Hmm ja ich weiss ich finde normal auch alles im PHP Handbuch. Unter MySQL finde ich aus irgendeinem Grund nur immer eine Art Frage und Antwort aber nie das Manual dazu da hab ich noch nicht so durchgeblickt sorry.

                Was ich will?
                Hmm ich dachte diesmal wär es eigentlich klar.
                Ich Probiere es nochmals etwas anders zu erklären:

                Ich habe folgende SELECT Abfrage:
                b.cid, c.cid, c.pid, c.title AS t1 FROM b1 b LEFT JOIN c1 c ON (b.cid=c.cid)

                Nun liest er mir die drei felder aus wo b.cid=c.cid

                Wenn wir hier den dingen einen wert geben würden nur bei einem Durchlauf (Normalerweise gibt es ja diverse einträge):
                b.cid=5
                c.cid=5
                c.pid=8
                c.title=test

                Bisher hatte ich es so, dass ich nun eine erneute SQL Abfrage habe, wo mir dann den titel ausliest wo c.cid=c.pid(von dieser abfrage eben).

                Und hier stellt sich mir wieder die Frage ob man das vielleicht in einer Abfrage hinbekommen kann das ich dann direkt t1 und t2 als beispiel zur verfügung hätte.

                Gruss

                kari_w

                Kommentar


                • #23
                  Tipp:

                  - du gibst die Struktur deiner Tabellen an
                  - du gibst die Beziehung zwischen den Tabellen an
                  - du gibst die Spalten an, deren Daten du haben willst
                  - du gibst die Bedingungen an
                  - du zeigst was du bisher versucht hast (eine einzige Abfrage)

                  und nicht weit und breit mit Daten und Abfragen, die du ohnehin nicht haben willst, erklären; das verwirrt ja nur.

                  btw: mySQL Manual

                  Kommentar


                  • #24
                    Original geschrieben von asp2php
                    Tipp:

                    - du gibst die Struktur deiner Tabellen an
                    - du gibst die Beziehung zwischen den Tabellen an
                    - du gibst die Spalten an, deren Daten du haben willst
                    - du gibst die Bedingungen an
                    - du zeigst was du bisher versucht hast (eine einzige Abfrage)

                    und nicht weit und breit mit Daten und Abfragen, die du ohnehin nicht haben willst, erklären; das verwirrt ja nur.

                    btw: mySQL Manual
                    du gibst die Struktur deiner Tabellen an:
                    b1:
                    cid
                    (aid
                    did
                    eid
                    bid) Die in Klammern haben keine Bedeutung für dieses beispiel)

                    c1:
                    cid
                    pid
                    title

                    du gibst die Spalten an, deren Daten du haben willst
                    Ich möchte nachher die Daten von c1

                    du gibst die Bedingungen an
                    b.cid=c.cid
                    Und nun soll eben noch die bedingung sein c.pid=c.cid

                    du zeigst was du bisher versucht hast (eine einzige Abfrage)
                    Eben diese Abfrage wie schon gesagt:
                    b.cid, c.cid, c.pid, c.title AS t1 FROM b1 b LEFT JOIN c1 c ON (b.cid=c.cid)

                    Nun geht es ins WHERE wo ich die Daten verarbeite. Im WHERE kommt dann wieder eine ABFRAGE um den "title" herauszufinden einfach mit der bedingung WHERE c.cid=c.pid(aus der vorherigen ABFRAGE)

                    Mehr habe ich nicht ausprobiert weil ich einfach nicht weiss ich ich dies vereinfachen kann. Ist ähnlich wie das vorherige Problem. Nur ist es doch was ganz anderes.
                    Ich ahbe schon diverse Foren durchgesucht udn einen link zum Manual für "twins" gefunden jedoch finde ich auch da nicht wirklich eine möglichkeit sowas zu machen.

                    Gruss

                    kari_w

                    Kommentar


                    • #25
                      und wenn du einfach mal WHERE c.cid = c.pid hintendranschreibst?
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #26
                        Und wie speicher ich dann den zweiten titel?

                        Der erste titel wird unter t1 gespeichert aber ich kann ich dann nun den zweiten titel als t2 speichern (titel ist ja das genau selbe feld) nur einmal ist die Bedingung b.cid=c.cid und das andere mal dann c.cid=c.pid(aber eben von genau eben ausgelesener tabelle.) ICh weiss leider nicht wie ich dies anders erklären könnte.
                        Ich probiere es kurz mit etwas php code von vorhin:

                        PHP-Code:
                        $result mysql_query("SELECT did, cid, title FROM c1");
                         while (
                        $row mysql_fetch_array($result)) {
                          
                        /* Hier haben wir noch allgemeinen code 
                        der momentan nicht wichtig ist für unsere Aussage */
                          
                        $row1 mysql_query("SELECT cid, pid, title AS t2 FROM c1 WHERE cid='$row[pid]'");

                         } 
                        Ich weiss nicht ob dir dies etwas weiterhilft. Hoffe aber schon. Und ich möchte eben auch hier die zweite Abfrage streichen. Dachte dies ist möglich, da es ja eigentlich die selben tabellen sind nur einmal mit einer anderen bedingung.

                        Gruss

                        kari_w

                        Kommentar


                        • #27
                          $row['pid'] hast du nicht, das selektierst du nicht!

                          und warum sollte der titel im zweiten SELECT anders sein als im ersten?
                          Ist cid nicht der primärschlüssel?
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #28
                            Sorry habe ich vergessen:

                            PHP-Code:
                            $result mysql_query("SELECT did, cid, pid, title FROM c1");
                             while (
                            $row mysql_fetch_array($result)) {
                              
                            /* Hier haben wir noch allgemeinen code 
                            der momentan nicht wichtig ist für unsere Aussage */
                              
                            $row1 mysql_query("SELECT cid, pid, title AS t2 FROM c1 WHERE cid='$row[pid]'");

                             } 

                            Also:
                            Doch es ist schon der Hauptschlüssel. Jedoch kannst du dir das wie ein Vater - Kind Modell vorstellen. pid ist eigentlich eine parentid.
                            Und da in pid ne weitere ID von einer Kategorie (c1) ist sind auch die titel anders. Und daher benötige ich beide.

                            Gruss

                            kari_w

                            Kommentar


                            • #29
                              dann verwende die tabelle ca nochmal, verpasse ihr einen alias und verknüpfe die beiden c1 per LEFT JOIN

                              FROM c1 kind LEFT JOIN c1 parent ON child.pid = parent.cid

                              die ausgewählten spalten bekommst du sicherlich allein angepasst
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar


                              • #30
                                Sorry!!!
                                Wusste nicht das du mehrmals die selbe Tabelle verwenden kannst!
                                Ich bedanke mich herzlichst bei allen die hier geholfen haben udn wünsche noch einen sehr angenehmen Abend und ne gute Woche!

                                Gruss

                                kari_w

                                Kommentar

                                Lädt...
                                X