MYSQL: Abfrage über 2 Tabellen die 2te

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • MYSQL: Abfrage über 2 Tabellen die 2te

    Hallo zusammen,
    ich habe leider nochmal ein kleines Prob mit einer Mysql Abfrage.

    Folgendes Tabellenkonstrukt:

    laender (a):
    ID (INT) , Name(VARCHAR), continent (ENUM)

    regio (b):
    ID(INT), Name (VARCHAR)

    regio-land (c):
    ID(INT), RegioID(INT) [gleich b.ID], LandID(INT) [gleich a.ID]

    mein Problem:
    Ich möchte gern eine Liste der Länder aus der Tabelle "laender" ausgeben, die der ausgewählten Region noch nicht zugeordnet sind. Alle Länder die der Region bereits zugeordnet sind sollen nicht angezeigt werden.

    Beispiel:
    In der Tabelle "laender" steht folgendes drin:
    ID,Name,continent
    1, Deutschland, Europa
    2,Schweiz,Europa
    3,Österreich,Europa
    4,Niederlande,Europa
    5,USA,Nord Amerika

    In der Tabelle "regio" steht folgendes drin:
    ID,Name
    1,Dreiländereck D-A-CH
    2,Sauerland
    3,Röhn

    In der Tabelle "regio-land"steht folgendes drin
    ID,RegioID,LandID
    1,1,1
    2,1,2
    3,1,3
    4,3,1
    5,2,1

    Wenn ich jetzt eine Abfrage mache für die Region 2 (Sauerland) möchte ich als Liste ausgegeben bekommen alle änder die nicht der Region Sauerland zugeordnet sind.
    Also:
    ID,Name
    2,Schweiz
    3,Österreich
    4,Niederlande
    5,USA

    Wenn ich jetzt eine Abfrage mache für die Region 1 (Dreiländereck D-A-CH) möchte ich als Liste ausgegeben bekommen alle änder die nicht der Region Dreiländereck D-A-CH zugeordnet sind.
    Also:
    4,Niederlande
    5,USA

    Wie bekomm ich das hin??
    Aktuell habe ich das hier nur dann werden mir die Länder nicht angezeigt die in der Tabelle "regio-land" irgendwo vorhanden sind.

    Quellcode

    1. SELECT a.ID, a.Name,a.continent FROM `laender` AS a LEFT JOIN `regio-land` AS b ON a.ID = b.LandID WHERE b.ID IS NULL ORDER BY a.continent ASC,aName ASC


    Ich bitte daher nochmals um Hilfe ;)

    Mit freundlichem Gruß
    boyge
  • na ganz klar, weil i nder zwischen tabelle immer zu einem lang ein eintrag gibt

    Quellcode

    1. SELECT a.ID, a.Name,a.continent
    2. FROM `laender` AS a
    3. JOIN `regio-land` AS b ON a.ID = b.LandID
    4. join region as r on r.ID = b.regionID
    5. WHERE r.name <> 'region name' --du arbeitest ja warscheinlich mit namen und nciht mit ids :)
    6. ORDER BY a.continent ASC,aName ASC


    ungefähr so :)
    MfG ShureG

    There are 10 kinds of people. Those who understand binary notation, and those who do not.
  • shureg schrieb:

    na ganz klar, weil i nder zwischen tabelle immer zu einem lang ein eintrag gibt

    Quellcode

    1. SELECT a.ID, a.Name,a.continent
    2. FROM `laender` AS a
    3. JOIN `regio-land` AS b ON a.ID = b.LandID
    4. join region as r on r.ID = b.regionID
    5. WHERE r.name <> 'region name' --du arbeitest ja warscheinlich mit namen und nciht mit ids :)
    6. ORDER BY a.continent ASC,aName ASC


    ungefähr so :)


    Hallo shureg,
    vielen dank für die Hilfe, nur leider ist das ergebnis falsch.
    Ich bekomme jetzt die Länder angezeigt die ich in der tabelle "regio-land" habe und zwar alle.
    Ich möchte aber die Länder angezeigt bekommen die der ausgewählten Region nicht zugewiesen sind.

    MfG
    boyge
  • Hallo shureg,
    vielen dank für deine Antwort.
    Ja das stimmt schon das ich alle Länder bekomme die nicht zur Region gehören. Ich bekomme die Länder angezeigt die zu einer anderen Region gehören. Ich brauche aber alle Länder aus der Tabelle "laender" die einer bestimmten, variablen Region nicht zugeordnet sind.

    Ich habe in der Tabelle "laender" alle Länder der welt drin. In der Tabelle "regio" habe ich die Regionen drin. in der Tabelle "regio-land" habe ich die Zuordnungen der einzelnen Länder zu den Regionen drin.
    Ich möchte jetzt ein Select feld haben in dem Alle länder enthalten sind die NICHT einer bestimmten Region zugeordnet sind.

    Wenn ich jetzt die Region 1 aufrufe und dieser sind Deutschland, Österreich und Schweiz zugeordnet, dann möchte ich im Select Feld alle Länder der Welt haben ausser Deutschland, Österreich und Schweiz.

    Wenn ich jetzt die Region 2 aufrufe und dieser sind Dänemark, Schweden, Finnland und Norwegen zugeordnet, dann möchte ich im Select Feld alle Länder haben ausser Dänemark, Schweden,Finnland und Norwegen.

    ich hoffe ich habe das jetzt etwas verständlicher ausgedrückt. ;)
  • dann verstehe ich nicht ganz den sinn der zwischentabelle bei dir, dachte da sind alle länder den regionen zugeordet

    so meinst du das? musst aber an deine tabellen anpassen, habe bei mir rumgespielt

    Quellcode

    1. SELECT a.*,b.*
    2. FROM land a
    3. left JOIN regioland b ON a.land_id = b.land_id
    4. left join regio r ON r.regio_id = b.regio_id
    5. WHERE r.name <> 'dach' --du arbeitest ja warscheinlich mit namen und nciht mit ids :)
    6. or b.regioland_id is null
    MfG ShureG

    There are 10 kinds of people. Those who understand binary notation, and those who do not.
  • Hallo shureg,
    danke das du mir weiterhin versuchst zu helfen,
    leider ist es das irgendwie immer noch nicht.
    Die Tabelle "regio-land" beinhaltet die Zuordnung der Länder zu den Regionen.
    Vielleicht erkläre ich mal was ich vor habe.

    Als erstes lege ich eine Region an. Diese wird in der Tabelle regio gespeichert und bekommt eine ID.
    jetzt gehe ich über ein Select Feld hin und wähle das erste Land aus in dem die Region liegt.
    Diese Infos speichere ich in der Tabelle "regio-land" mit den Werten
    RegioID = die ID der Region aus der Tabelle "regio".
    LandID = die ID des Landes aus der Tabelle "laender".

    Jetzt füge ich nach dem gleichen Schema ein 2tes Land hinzu.

    Jetzt füge eich eine weitere Region ein. und dazu 2 weitere Länder.

    Meine Tabellen sehen jetzt z.B. so aus

    Quellcode

    1. Tabelle "laender"
    2. ID | Name | continent
    3. 1 | Deutschland | Europa
    4. 2 | Österreich | Europa
    5. 3 | Schweiz | Europa
    6. 4 | Niederlande | Europa
    7. 5 | Polen | Europa
    8. 6 | Tschechien | Europa
    9. 7 | Italien | Europa
    10. usw.
    11. Tabelle "regio"
    12. ID | Name |
    13. 1 | Alpen
    14. 2 | Tirol
    15. Tabelle "regio-land"
    16. ID | RegioID | LandID
    17. 1 | 1 | 2
    18. 2 | 1 | 3
    19. 3 | 2 | 2
    20. 4 | 2 | 7
    Alles anzeigen


    Jetzt möchte ich der Region 1, weil ich es vergessen habe noch das Land Italien hinzufügen.
    Und jetzt kommt das wo das Prolem liegt.
    In dem Select Feld sollen nun alle Länder auftauchen die NICHT der Region 1 zugewiesen sind. Die die zugewiesen sind (Österreich und Schweiz) sollen ausgeblendet werden.
    Nun habe ich auch noch festgestellt das ich in der Region 2 auch ein Land vergessen habe. Dort dürfetn jetzt in dem Selectfeld dann nicht Österreich und Italien zu sehen sein, denn diese sind der Region 2 ja schon zugewiesen.

    Ich weiß jetzt wirklich nicht wie ich das noch genauer erklären soll. Die Tabelle "regio-land" ist dafür da die Länder den unterschiedlichen Regionen zuzuordnen, denn eine Region kann ja über mehrere Länder gehen.

    Bei der Generierung des select Feldes sollen hat die Länder ausgeschlossen werden die der ausgewählten Region ja schon zugeordnet sind. Das ergebnis soll also sein:

    Zeige ALLE Länder aus der Tabelle "laender" mit ausnahme der Länder die der Region "x" schon zugeordnet sind zu erkennen in der Tabelle "regio-land".

    Vielleicht ist es jetzt etwas genauer was ich möchte ;)

    Ich weiß das die Zuweisung der Regionen jetzt in diesem Beispiel geografisch nicht ganz korrekt sind ;)
    MfG
    boyge
  • du brauchst ja keine romane zu schreiben, sag doch einfach was du haben willst und gut :D

    einfacher gesagt du willst alle länder die nicht in der region-land tabelle erscheinen
    dann so krigst du alle länder die noch keine region haben

    Quellcode

    1. SELECT a.*,b.*
    2. FROM land a
    3. left JOIN regioland b ON a.land_id = b.land_id
    4. WHERE b.regioland_id IS NULL
    MfG ShureG

    There are 10 kinds of people. Those who understand binary notation, and those who do not.
  • Hallo zusammen,
    leider ist das nicht das gleiche, denn in dem anderen Thread habe ich unabhängig eines zweiten Faktor die Ausgabe haben wollen.
    Hier ist aber noch der Faktor Region dabei.

    In der Tabelle "regio-land" sind für ALLE Regionen die Zuordnungen der einzelnen Länder enthalten.
    mein Problem ist aber nun das die Ausgabe von der Tabelle "laender" immer nur von EINER Region abhängig sein soll und nicht von dem gesamten Inhalt in der Tabelle "regio-land" was bei jeder vorgeschlagenen Lösung der Fall war.

    Zu erst wähle ich die Region aus. Dann soll ein Selectfeld generiert werden wo ALLE Länder der Welt drin sind mit AUSNAHME derer die der ausgewählten Region schon zugeordnet sind. In der Tabelle "regio-land" sind für ALLE Regionen die Zuordnungen drin. Es soll also geprüft werden Welche Länder sind mit der entsprechenden Region schon verknüpft, diese bitte ausblenden.
    Ich weiß wirklich nicht wie ich das noch einfacher erklären soll.
    Ich bedanke mich trotzdem für eure Hilfe.

    MfG
    boyge
  • ich glaube du weisst selbst nicht was du willst...
    entweder du erhälst alle länder die keiner region zugewissen sind, dann brauchst du auch nciht die region mit einzubeziehen, da sie gar keine zugewiesen sind.
    oder alle länder die einer region nicht zugewiesen,können aber auch andere region bereits zugewiesen sein.


    du kannst nicht selektieren nur die länder die möglicherweise zu der gegebenen gehören aber nicht zugewiesen wurden, entweder alle länder die nicht zugewiesen sind oder garkeine

    beide abfragen habe ich dir bereits geliefert.
    MfG ShureG

    There are 10 kinds of people. Those who understand binary notation, and those who do not.
  • Hallo,
    ich weiß schon was ich will.
    ich möchte alle Länder angezeigt haben, die der ausgewählten Region nicht zugeordnet sind.
    Ich selektiere eine Region aus der Tabelle "regio" diese hat eine ID. Mit Hilfe dieser ID schaue ich in der Tabelle "regio-land" nach welche Länder sind der Region schon zugeordnet. Diese Länder sollen nun beim erstellen des Selectfeldes mit der Tabelle "laender" ausgeschlossen, also nicht im Selectfeld angezeigt werden.

    Ich brauche nun also eine Select Anweisung die genau dieses macht. Der ich die ID der ausgewählten Region übergebe und die dann prüft welche Länder sind der Region zugeordnet und schliesst diese beim Erstellen des Selectfeldes aus der Tabelle "laender" aus.

    Das kann doch eigentlich nicht so schwer zu verstehen sein.
  • boyge schrieb:


    ich möchte alle Länder angezeigt haben, die der ausgewählten Region nicht zugeordnet sind.

    entweder du erhälst alle länder die keiner region zugewissen sind,


    sag mir wo da der unterschied sind?
    du hast eine region und bekommst alle länder die noch diese region haben, also sibnd das alle länder die keine region haben :wacko:

    sag mir was in deinem beispiel rauskommen soll und nciht was nicht rauskommen soll, bei region 1 und bei region 2
    MYSQL: Abfrage über 2 Tabellen die 2te
    MfG ShureG

    There are 10 kinds of people. Those who understand binary notation, and those who do not.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von shureg ()

  • Hallo shureg,
    Ich möchte alle Länder haben die der Region die ich vorher ausgewählt habe noch NICHT zugeordnet sind. Das möchte ich haben.
    Ich mach mir jetzt mal die Mühe und kopiere mal die Livedaten hier rein um die es geht.

    Tabelle regio:

    Quellcode

    1. "ID";"Name";"Text";"Sync"
    2. "1";"Dreiländereck D-F-CH";"test";"1"
    3. "2";"Dreiländereck D-A-CH";"test";"1"
    4. "3";"Dreiländereck D-A-CZ";"test";"1"
    5. "4";"Dreiländereck D-CZ-PL";"test";"1"
    6. "5";"Dreiländereck D-NL-BE";"test";"1"
    7. "6";"Dreiländereck D-BE-F";"test";"1"
    8. "7";"Röhn";"test";"1"
    9. "8";"Rhein-Main-Gebiet";"test";"1"
    10. "9";"Tirol";"test";"1"
    11. Tabelle "laender" (ausschnitt nur Europa):
    12. "id";"continent";"nameger"
    13. "4";"Europa";"Aland"
    14. "5";"Europa";"Albanien"
    15. "10";"Europa";"Andorra"
    16. "27";"Europa";"Belgien"
    17. "33";"Europa";"Bosnien und Herzegowina"
    18. "40";"Europa";"Bulgarien"
    19. "51";"Europa";"Dänemark"
    20. "52";"Europa";"Deutschland"
    21. "61";"Europa";"Estland"
    22. "64";"Europa";"Färöer"
    23. "66";"Europa";"Finnland"
    24. "67";"Europa";"Frankreich"
    25. "73";"Europa";"Georgien"
    26. "77";"Europa";"Griechenland"
    27. "82";"Europa";"Guernsey, Vogtei"
    28. "95";"Europa";"Irland, Republik"
    29. "96";"Europa";"Island"
    30. "98";"Europa";"Italien"
    31. "102";"Europa";"Jersey"
    32. "123";"Europa";"Kroatien"
    33. "129";"Europa";"Lettland"
    34. "133";"Europa";"Liechtenstein, Fürstentum"
    35. "134";"Europa";"Litauen"
    36. "135";"Europa";"Luxemburg"
    37. "142";"Europa";"Malta"
    38. "149";"Europa";"Mazedonien"
    39. "152";"Europa";"Moldawien"
    40. "153";"Europa";"Monaco"
    41. "259";"Europa";"Montenegro"
    42. "165";"Europa";"Niederlande"
    43. "172";"Europa";"Norwegen"
    44. "174";"Europa";"Österreich"
    45. "184";"Europa";"Polen"
    46. "185";"Europa";"Portugal"
    47. "189";"Europa";"Rumänien"
    48. "194";"Europa";"San Marino"
    49. "197";"Europa";"Schweden"
    50. "198";"Europa";"Schweiz"
    51. "200";"Europa";"Serbien und Montenegro"
    52. "205";"Europa";"Slowakei"
    53. "206";"Europa";"Slowenien"
    54. "208";"Europa";"Spanien"
    55. "218";"Europa";"Svalbard und Jan Mayen"
    56. "232";"Europa";"Tschechische Republik"
    57. "240";"Europa";"Ukraine"
    58. "258";"Europa";"Ungarn"
    59. "245";"Europa";"Vatikanstadt"
    60. "249";"Europa";"Vereinigtes Königreich von Großbritannien und Nordirland"
    61. "253";"Europa";"Weißrussland"
    62. Tabelle "regio-land":
    63. "ID";"RegioID";"LandID";"Sync"
    64. "1";"1";"52";"1"
    65. "2";"1";"67";"1"
    66. "3";"1";"198";"1"
    67. "4";"2";"52";"1"
    68. "5";"2";"174";"1"
    69. "6";"2";"198";"1"
    70. "7";"3";"52";"1"
    71. "8";"3";"174";"1"
    72. "9";"3";"232";"1"
    73. "10";"4";"52";"1"
    74. "11";"4";"232";"1"
    75. "12";"4";"184";"1"
    76. "13";"5";"52";"1"
    77. "14";"5";"165";"1"
    78. "15";"5";"27";"1"
    79. "16";"6";"52";"1"
    80. "17";"6";"27";"1"
    81. "18";"6";"67";"1"
    82. "19";"7";"52";"1"
    83. "20";"9";"174";"1"
    Alles anzeigen


    Wenn ich jetzt das erste beispiel von dir anwende kommt dieses raus:

    Quellcode

    1. SELECT a.ID, a.nameger,a.continent
    2. FROM `config-laender` AS a
    3. JOIN `config-regio-land` AS b ON a.ID = b.LandID
    4. JOIN `config-regio` AS r ON r.ID = b.regioID
    5. WHERE r.name <> 'Dreiländereck D-A-CH'
    6. ORDER BY a.continent ASC,a.nameger ASC;
    7. "ID";"nameger";"continent"
    8. "27";"Belgien";"Europa"
    9. "27";"Belgien";"Europa"
    10. "52";"Deutschland";"Europa"
    11. "52";"Deutschland";"Europa"
    12. "52";"Deutschland";"Europa"
    13. "52";"Deutschland";"Europa"
    14. "52";"Deutschland";"Europa"
    15. "52";"Deutschland";"Europa"
    16. "67";"Frankreich";"Europa"
    17. "67";"Frankreich";"Europa"
    18. "165";"Niederlande";"Europa"
    19. "174";"Österreich";"Europa"
    20. "174";"Österreich";"Europa"
    21. "184";"Polen";"Europa"
    22. "198";"Schweiz";"Europa"
    23. "232";"Tschechische Republik";"Europa"
    24. "232";"Tschechische Republik";"Europa"
    Alles anzeigen

    dabei werden mir alle Länder angezeigt die in der Tabelle "regio-land" enthalten sind und die nicht der Region "Dreiländereck D-A-CH" zugeordnet sind.

    Bei dem 2ten Lösungsansatz kommt folgendes raus (diese Select-Anweisung ist deiner Version etwas angepasst um nicht die gesamten Daten auszugeben, inhaltlich ist sie aber gleich):

    Quellcode

    1. SELECT a.continent,a.nameger,a.id,b.id AS RegioLandID,b.RegioID,b.LandID
    2. FROM `config-laender` a
    3. LEFT JOIN `config-regio-land` b ON a.id = b.LandID
    4. LEFT JOIN `config-regio` r ON r.ID = b.RegioID
    5. WHERE r.name <> 'Dreiländereck D-A-CH' OR b.ID IS NULL AND a.continent = 'Europa'
    6. ORDER BY a.continent ASC,a.nameger ASC;
    7. "continent";"nameger";"id";"RegioLandID";"RegioID";"LandID"
    8. "Europa";"Aland";"4";NULL;NULL;NULL
    9. "Europa";"Albanien";"5";NULL;NULL;NULL
    10. "Europa";"Andorra";"10";NULL;NULL;NULL
    11. "Europa";"Belgien";"27";"15";"5";"27"
    12. "Europa";"Belgien";"27";"17";"6";"27"
    13. "Europa";"Bosnien und Herzegowina";"33";NULL;NULL;NULL
    14. "Europa";"Bulgarien";"40";NULL;NULL;NULL
    15. "Europa";"Dänemark";"51";NULL;NULL;NULL
    16. "Europa";"Deutschland";"52";"1";"1";"52"
    17. "Europa";"Deutschland";"52";"7";"3";"52"
    18. "Europa";"Deutschland";"52";"10";"4";"52"
    19. "Europa";"Deutschland";"52";"13";"5";"52"
    20. "Europa";"Deutschland";"52";"16";"6";"52"
    21. "Europa";"Deutschland";"52";"19";"7";"52"
    22. "Europa";"Estland";"61";NULL;NULL;NULL
    23. "Europa";"Färöer";"64";NULL;NULL;NULL
    24. "Europa";"Finnland";"66";NULL;NULL;NULL
    25. "Europa";"Frankreich";"67";"2";"1";"67"
    26. "Europa";"Frankreich";"67";"18";"6";"67"
    27. "Europa";"Georgien";"73";NULL;NULL;NULL
    28. "Europa";"Griechenland";"77";NULL;NULL;NULL
    29. "Europa";"Guernsey, Vogtei";"82";NULL;NULL;NULL
    30. "Europa";"Irland, Republik";"95";NULL;NULL;NULL
    31. "Europa";"Island";"96";NULL;NULL;NULL
    32. "Europa";"Italien";"98";NULL;NULL;NULL
    33. "Europa";"Jersey";"102";NULL;NULL;NULL
    34. "Europa";"Kroatien";"123";NULL;NULL;NULL
    35. "Europa";"Lettland";"129";NULL;NULL;NULL
    36. "Europa";"Liechtenstein, Fürstentum";"133";NULL;NULL;NULL
    37. "Europa";"Litauen";"134";NULL;NULL;NULL
    38. "Europa";"Luxemburg";"135";NULL;NULL;NULL
    39. "Europa";"Malta";"142";NULL;NULL;NULL
    40. "Europa";"Mazedonien";"149";NULL;NULL;NULL
    41. "Europa";"Moldawien";"152";NULL;NULL;NULL
    42. "Europa";"Monaco";"153";NULL;NULL;NULL
    43. "Europa";"Montenegro";"259";NULL;NULL;NULL
    44. "Europa";"Niederlande";"165";"14";"5";"165"
    45. "Europa";"Norwegen";"172";NULL;NULL;NULL
    46. "Europa";"Österreich";"174";"8";"3";"174"
    47. "Europa";"Österreich";"174";"20";"9";"174"
    48. "Europa";"Polen";"184";"12";"4";"184"
    49. "Europa";"Portugal";"185";NULL;NULL;NULL
    50. "Europa";"Rumänien";"189";NULL;NULL;NULL
    51. "Europa";"San Marino";"194";NULL;NULL;NULL
    52. "Europa";"Schweden";"197";NULL;NULL;NULL
    53. "Europa";"Schweiz";"198";"3";"1";"198"
    54. "Europa";"Serbien und Montenegro";"200";NULL;NULL;NULL
    55. "Europa";"Slowakei";"205";NULL;NULL;NULL
    56. "Europa";"Slowenien";"206";NULL;NULL;NULL
    57. "Europa";"Spanien";"208";NULL;NULL;NULL
    58. "Europa";"Svalbard und Jan Mayen";"218";NULL;NULL;NULL
    59. "Europa";"Tschechische Republik";"232";"9";"3";"232"
    60. "Europa";"Tschechische Republik";"232";"11";"4";"232"
    61. "Europa";"Ukraine";"240";NULL;NULL;NULL
    62. "Europa";"Ungarn";"258";NULL;NULL;NULL
    63. "Europa";"Vatikanstadt";"245";NULL;NULL;NULL
    64. "Europa";"Vereinigtes Königreich von Großbritannien und Nordirland";"249";NULL;NULL;NULL
    65. "Europa";"Weißrussland";"253";NULL;NULL;NULL
    Alles anzeigen


    Nach den Daten die ich jetzt hier gepostet habe möchte ich folgendes Ergebnis haben für die Region "Dreiländereck D-A-CH" :
    "id";"continent";"nameger"
    "4";"Europa";"Aland"
    "5";"Europa";"Albanien"
    "10";"Europa";"Andorra"
    "27";"Europa";"Belgien"
    "33";"Europa";"Bosnien und Herzegowina"
    "40";"Europa";"Bulgarien"
    "51";"Europa";"Dänemark"
    "52";"Europa";"Deutschland" <-- IST NICHT IM ERGEBNIS VORHANDEN!!!!
    "61";"Europa";"Estland"
    "64";"Europa";"Färöer"
    "66";"Europa";"Finnland"
    "67";"Europa";"Frankreich"
    "73";"Europa";"Georgien"
    "77";"Europa";"Griechenland"
    "82";"Europa";"Guernsey, Vogtei"
    "95";"Europa";"Irland, Republik"
    "96";"Europa";"Island"
    "98";"Europa";"Italien"
    "102";"Europa";"Jersey"
    "123";"Europa";"Kroatien"
    "129";"Europa";"Lettland"
    "133";"Europa";"Liechtenstein, Fürstentum"
    "134";"Europa";"Litauen"
    "135";"Europa";"Luxemburg"
    "142";"Europa";"Malta"
    "149";"Europa";"Mazedonien"
    "152";"Europa";"Moldawien"
    "153";"Europa";"Monaco"
    "259";"Europa";"Montenegro"
    "165";"Europa";"Niederlande"
    "172";"Europa";"Norwegen"
    "174";"Europa";"Österreich" <-- IST NICHT IM ERGEBNIS VORHANDEN!!!
    "184";"Europa";"Polen"
    "185";"Europa";"Portugal"
    "189";"Europa";"Rumänien"
    "194";"Europa";"San Marino"
    "197";"Europa";"Schweden"
    "198";"Europa";"Schweiz" <-- IST NICHT IM ERGEBNIS VORHANDEN!!!
    "200";"Europa";"Serbien und Montenegro"
    "205";"Europa";"Slowakei"
    "206";"Europa";"Slowenien"
    "208";"Europa";"Spanien"
    "218";"Europa";"Svalbard und Jan Mayen"
    "232";"Europa";"Tschechische Republik"
    "240";"Europa";"Ukraine"
    "258";"Europa";"Ungarn"
    "245";"Europa";"Vatikanstadt"
    "249";"Europa";"Vereinigtes Königreich von Großbritannien und Nordirland"
    "253";"Europa";"Weißrussland"

    Die roten Daten sollen im Ergebnis nicht erscheinen da diese ja sowieso schon der Region "Dreiländereck D-A-CH" zugewiesen sind. Wenn ich jetzt eine andere Region nehme sollen die Länder ausgeblendet werden die der Region in der Tabelle regio-land schon zugewiesen sind.

    Ich hoffe jetzt ist es verständlich ;)
  • so ich glaube jetzt ist es das was du möchtest, ist aber nicht gerade sauber denke ich mal.
    optimieren musst du dann selbst ;)

    Quellcode

    1. select a.*
    2. ,b.*
    3. ,c.*
    4. from scott.land a
    5. left join scott.regioland b on b.land_id = a.land_id
    6. left join scott.regio c on c.regio_id= b.regio_id
    7. where
    8. c.name <>'dach'
    9. and a.land_id not in(select a.land_id
    10. from scott.land a
    11. left join scott.regioland b on b.land_id = a.land_id
    12. left join scott.regio c on c.regio_id= b.regio_id
    13. where
    14. c.name ='dach')
    15. or b.regioland_id is null
    Alles anzeigen


    PS: ich teste alles unter oracle, weiss nicht ob es auch so weit in mysql funktioniert
    MfG ShureG

    There are 10 kinds of people. Those who understand binary notation, and those who do not.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von shureg ()

  • Hallo shureg,
    vielen vielen Dank. Genau das ist es 8)

    Quellcode

    1. select a.id,a.continent,a.nameger
    2. from `config-laender` a
    3. left join `config-regio-land` b on b.LandID = a.id
    4. left join `config-regio` c on c.ID= b.RegioID
    5. where
    6. c.ID <> 2
    7. and a.id not in(select a.id
    8. from `config-laender` a
    9. left join `config-regio-land` b on b.LandID = a.id
    10. left join `config-regio` c on c.ID = b.RegioID
    11. where
    12. c.ID = 2)
    13. or b.ID is null
    14. GROUP BY a.id
    15. ORDER BY a.continent ASC, a.nameger ASC
    Alles anzeigen

    Es funktioniert bestens.

    Ich bedanke mich auch für die Geduld die du aufgebracht hast :D

    MfG
    boyge