select, zwei tabellen, eine bedingung

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

  • select, zwei tabellen, eine bedingung

    jetzt muß ich doch fragen nachdem suche nix nahrhaftes ergeben hat;(

    ich habe zwei tabellen die über die spalte id miteinander verbunden sind

    ich möchte jetzt aus beiden tabellen alle id's auslesen ohne duplikate! soweit habe ich das mit inner join schon hinbekommen aber jetzt kommt die bedingung: in der ersten tabelle gibts noch eine spalte tab (enum) und da bauch ich jetzt nur alle ids where tab = 'news'

    wie kann ich da machen die bedingung trifft ja nur auf eine tabelle von den zweien zu?

    steh aufm schlauch ? wer sschubst mich an

  • #2
    Re: select, zwei tabellen, eine bedingung

    steh aufm schlauch ? wer sschubst mich an
    gern

    du kannst ja
    Code:
    SELECT * 
    FROM erste_tab e
    die tabelle über ihren namen oder ihren alias ansprechen
    Code:
    WHERE e.spalte = "17"
    zeig mal die query ...
    EDIT:
    brauchste nicht mal, die db sollte sich bei eindeutigkeit schon die richtige tab suchen ...
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      ??? versteh ich nicht ganz wenn ich die query mal in zwei zerlege will ich folgenden erreichen:

      1) select id from parent_news where tab = 'news'
      2) select id from child_news_1

      und das ganze DISTINCT

      wie baue ich die zwei in eine query um alle ids aus beiden tabellen zu kriegen?

      Kommentar


      • #4
        kann aber nicht schaden, wenn du dem wie im zweiten post gezeigt, sagst, in welcher tabelle das feld tab=news sein soll.

        Kommentar


        • #5
          sorry, die spalte tab ist in parent_news ...

          Kommentar


          • #6
            mir sollst du das nicht sagen, dem query!

            Kommentar


            • #7
              oh ja! ich hab jetzt:

              Code:
              ("SELECT * FROM parent_news, child_news WHERE parent_news.tab = 'news'");
              so krieg ich jetzt zwar alle ids aber die ausgabe ist dreifach? also ich krieg dreimal die gleiche id? wenn ich distinct mache

              Code:
              ("SELECT DISTINCT id FROM parent_news, child_news WHERE parent_news.tab = 'news'");
              erhalte ich: 'id' in field list is ambiguous

              was n jetzt?

              Kommentar


              • #8
                'id' in field list is ambiguous
                erhalte ich: 'id' in field list is ambiguous
                dann solltest du mal bitte übersetzen!!!

                Frank, im Gegensatz zu dem Query den du an MySQL schickst, sendet MySQL dir eine EINDEUTIGE Fehlermeldung... Wieso sollte MySQL dann verstehen, was du willst, wenn du nichtmal verstehst, was MySQL dir sagt!

                Kommentar


                • #9
                  ... oh mann ja ich glaube das heißt das irgendwas mit der id mehrdeutig ist aber wie beheben? ich bin jetzt schon am raten weiß nicht weiter ... selbst die abfrage:

                  Code:
                  ("SELECT * FROM parent_news, child_news WHERE parent_news.tab = 'news'");
                  liefert ja auch nicht die gewünschten ergebnisse auch wenn sie doppelt wären, es fehlen einfach id's bei der ausgabe

                  ich gebs auf ... bevor ich völlig verzweifel .... vielleicht probier ich noch mal im neuen jahr ..... ah mist is ja schon

                  Kommentar


                  • #10
                    gib doch einfach explizip an,welches Feld du meinst!

                    Kommentar


                    • #11
                      Tobiaz ich weiß deinen 'einsatz' echt zu würdigen aber ich hab mich hier selbst verrannt und habs gefühl ich hab beim jahrewechsel irgendwie nur meinen halben bestand mitrüber genommen. wie auch immer ich hab die hier nochmal die tabellen struktur gepostet. und hier die query in theoretischer form:

                      gib mir alle ids beider tabellen (bedingung bei parent_news_de where tab = 1) ohne duplikate

                      wenn du nicht antwortest wärs auch nicht mehr schlimm! danke trotz alledem (übrigens an alle fleißigen helfer)

                      Code:
                      CREATE TABLE parent_news_de (
                        id int(10) unsigned NOT NULL auto_increment,
                        tab enum('1','2','3') NOT NULL default '1',
                        datum datetime NOT NULL default '0000-00-00 00:00:00',
                        titel varchar(60) NOT NULL default '',
                        PRIMARY KEY  (id)
                      ) TYPE=MyISAM;
                      Code:
                      CREATE TABLE child_news_de (
                        id int(10) unsigned NOT NULL default '0',
                        content1 varchar(200) NOT NULL default '',
                        UNIQUE KEY id (id)
                      ) TYPE=MyISAM;

                      Kommentar


                      • #12
                        OffTopic:
                        Tobiaz ich weiß deinen 'einsatz'
                        ch hab mich hier selbst verrannt und habs gefühl ich hab beim jahrewechsel irgendwie nur meinen halben bestand mitrüber genommen.
                        Ganz ehrlich? Ich würd sagen, das ist der gleiche Stand mit den gleichen Problemen wie letztes Jahr.


                        Überleg mal, wie du dem beigebracht hast, welche Tabelle der beim WHERE berücksichtigen soll. Was hindert dich daran, das gleiche auch beim SELECT zu machen?

                        Kommentar


                        • #13
                          ch hab mich hier selbst verrannt und habs gefühl ich hab beim jahrewechsel irgendwie nur meinen halben bestand mitrüber genommen.
                          ich meinte nich unbedingt meine php skills (wenn ich mir überhaupt so etwas zuschreiben darf) .... aber ist ja auch egal

                          meintest du sowas

                          Code:
                          ("SELECT parent_news.id, child_news.id FROM parent_news, child_news WHERE parent_news.tab = 'news'");
                          das passiert auch nix anderes ich krieg nicht alle ids zurück und die ich zurückkriege sind doppelt und dreifach (bzw der anzahl der zeilen)

                          Kommentar


                          • #14
                            meintest du sowas
                            ja!

                            was ich grade erst bemerke. du willst doch verknüpfen. warum machst du das eigentlich nicht. hattest du das prob nicht kürzlich erst? (kann mich irren)

                            nicht alle ids zurück
                            muss an der begrenzung (WHERE) liegen!
                            die ich zurückkriege sind doppelt und dreifach
                            wundert dich nicht wirklich?

                            Kommentar


                            • #15
                              ja das hatte ich kürzlich, aber das habe ich schon probiert (na ja so wie man nennen kann)

                              Code:
                              ("SELECT parent_news.id, child_news.id FROM parent_news LEFT JOIN child_news USING(id) WHERE parent_news.tab = 'news'");
                              aber das kommt auch nicht hin ich hab zwar keine duplikate mehr krieg aber nicht alle ids zurück. left join ist doch aber korrekt in dem falle oder?


                              EDIT:

                              bevor wir uns weiter quälen (na ja er ich löse ichs einfach anders -> ne schleife wirds auch tun zumal es nicht soviel datensätze sind! aber mir ist jetzt klar geworden das ich mich mehr mit den sql basics auseinander setzen sollte uiuiu, ... dank dir für deine geduld

                              Zuletzt geändert von frank7l7; 01.01.2004, 22:23.

                              Kommentar

                              Lädt...
                              X