[ERLEDIGT] MySQL-Problem

Dieses Thema im Forum "Script Serverseitig" wurde erstellt von Alexander Geilhaupt, 8. August 2008.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Alexander Geilhaupt

    Alexander Geilhaupt Erfahrener Benutzer

    Registriert seit:
    17. November 2002
    Beiträge:
    680
    Ort:
    Berlin
    Firmenname:
    HTML Kombinat LTD
    Anbieterprofil:
    Klick
    Hallo zusammen,

    ich stehe gerade wie der Ochs vorm Berg. Ich habe zwei Tabellen, die ich mittels LEFT JOIN in einer SELECT-Anfrage verbinde.

    Tabelle 1 sieht wie folgt aus:

    Code:
    tabelle1.id (Primärschlüssel, auto_increment) | tabelle1.preis (index, double)
    1|1500
    2|2000
    3|4500
    
    In Tabelle 2 sind die IDs aus Tabelle 1 mit weiteren IDs aus einer dritten Tabelle verbunden:

    Code:
    tabelle1.id (Primärschlüssel) | tabelle3.id (Primärschlüssel)
    1|3
    1|4
    1|5
    2|1
    2|3
    2|4
    Ich möchte nun alle IDs aus Tabelle 1 auslesen, die in Tabelle 2 mit den tabelle3.id-Werten 3 UND 4 referenziert sind:

    Code:
    SELECT DISTINCT tabelle1.tabelle1.id FROM tabelle 1
    LEFT JOIN tabelle2 ON tabelle1.tabelle1.id = tabelle2.tabelle1.id
    WHERE (tabelle2.tabelle3.id = '3')
    AND (tabelle2.tabelle3.id = '4')
    
    Das gibt aber keine Ergebnisse, meldet keinen Fehler sondern gibt einfach nur null Zeilen aus. Ich finde einfach den Fehler nicht.

    Liebe Grüße

    Alex
     
  2. MW_Internet

    MW_Internet Eingetragener Provider

    Registriert seit:
    22. August 2007
    Beiträge:
    2.507
    Firmenname:
    MW-Internet
    Anbieterprofil:
    Klick
    AW: MySQL-Problem


    Das kann nur funktionieren, wenn DU = "Mädchen" AND DU = "Junge" bist, aber kein Zwitter...
     
  3. Alexander Geilhaupt

    Alexander Geilhaupt Erfahrener Benutzer

    Registriert seit:
    17. November 2002
    Beiträge:
    680
    Ort:
    Berlin
    Firmenname:
    HTML Kombinat LTD
    Anbieterprofil:
    Klick
    AW: MySQL-Problem

    Kannste das mal genauer erklären? ich steh echt aufm Schlauch...
     
  4. DjGL

    DjGL Eingetragener Provider

    Registriert seit:
    28. November 2005
    Beiträge:
    1.085
    Ort:
    Wien
    Firmenname:
    Light-Gap.net
    Anbieterprofil:
    Klick
    AW: MySQL-Problem

    Ohne das jetzt getestet zu haben:
    Was MW_Internet meint ist dass ein Eintrag nicht tabelle2.tabelle3.id=3 und tabelle2.tabelle3.id=4 zugleich sein kann .. du willst ja alle Einträge die entweder 3 oder 4 sind nicht beides zusammen.
     
    Zuletzt bearbeitet: 8. August 2008
  5. G.Schuster

    G.Schuster Eingetragener Provider

    Registriert seit:
    30. August 2004
    Beiträge:
    4.062
    Firmenname:
    actra.development
    Anbieterprofil:
    Klick
    AW: MySQL-Problem

    Code:
    SELECT DISTINCT tabelle1.tabelle1.id FROM tabelle 1
    LEFT JOIN tabelle2 ON tabelle1.tabelle1.id = tabelle2.tabelle1.id
    WHERE (SELECT COUNT(tabelle2.tabelle3.id) FROM tabelle2.tabelle3.id WHERE tabelle2.tabelle3.id IN (3, 4)) = 2
    
    Ungetestet und soll eigentlich auch nur als Denkansatz dienen.
    Im Übrigen ist die Tabellenbezeichnung mehr als fürn Hintern...selbst wenn es nur im Beispiel so aussehen sollte.
     
  6. Alexander Geilhaupt

    Alexander Geilhaupt Erfahrener Benutzer

    Registriert seit:
    17. November 2002
    Beiträge:
    680
    Ort:
    Berlin
    Firmenname:
    HTML Kombinat LTD
    Anbieterprofil:
    Klick
    AW: MySQL-Problem

    Ich glaube, das kommt mir am nächsten. Zumindest vom Ansatz her. EDIT: Nein, das löst mein Problem auch nicht. Muss ich wohl anders lösen.

    Und ich will nicht die ODER-Verbindung sondern UND.

    Also alle IDs aus Tabelle 1, die in Tabelle 2 den tabelle3.ids 3 UND 4 zugeordnet sind.
     
    Zuletzt bearbeitet: 8. August 2008
  7. G.Schuster

    G.Schuster Eingetragener Provider

    Registriert seit:
    30. August 2004
    Beiträge:
    4.062
    Firmenname:
    actra.development
    Anbieterprofil:
    Klick
    AW: MySQL-Problem

    Ja, genau das hab ich dir doch als Ansatz gegeben.
    Wenn tabelle2.tabelle3.id einmal 3 und einmal 4 ist ergibt der COUNT 2 -> beide vorhanden.
    Wenn es nur in einer der beiden ist -> COUNT = 1
    Wenn natürlich z.B. 2 Mal "3" oder "4" vorhanden ist hast du bei der Struktur was falsch gemacht ;)
     
  8. 1st-Rootserver.de

    1st-Rootserver.de Eingetragener Provider

    Registriert seit:
    15. September 2004
    Beiträge:
    3.444
    Geschlecht:
    männlich
    Ort:
    Berlin
    Firmenname:
    1st-Rootserver
    Anbieterprofil:
    Klick
    AW: MySQL-Problem

    Bin übermüdet!

    aber wieso machst du dann nicht
    Code:
    WHERE IN (3,4)
     
  9. freelancer

    freelancer Erfahrener Benutzer

    Registriert seit:
    8. März 2002
    Beiträge:
    1.066
    AW: MySQL-Problem

    mal schnell aus dem bauch heraus..
    Code:
    SELECT DISTINCT TAB1.ID1, TAB1.PREIS FROM TAB1
    LEFT JOIN TAB2
     ON TAB1.ID1 = TAB2.ID1
    INNER JOIN TAB2 AS T2
     ON TAB2.ID1 = T2.ID1
    WHERE (TAB2.ID2 = '3' AND T2.ID2 = '4')
    
     
  10. Alexander Geilhaupt

    Alexander Geilhaupt Erfahrener Benutzer

    Registriert seit:
    17. November 2002
    Beiträge:
    680
    Ort:
    Berlin
    Firmenname:
    HTML Kombinat LTD
    Anbieterprofil:
    Klick
    AW: MySQL-Problem

    Jup, that's it. Vielen Dank
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen