Ankündigung

Einklappen
Keine Ankündigung bisher.

Kombinieren 2er SELECTs

Einklappen

Neue Werbung 2019

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

  • Kombinieren 2er SELECTs

    Hallo alle zusammen,

    ich bin Anfaenger und steh grad total auf dem Schlauch (bzw. hab auch keine Ahnung). Ich habe 2 wunderschoene Anfragen, die beide 1a funktionieren.

    Code:
    SELECT t1.id from data AS t1 WHERE t1.id NOT IN
    ( SELECT t2.id from invoice AS t2 WHERE time = 12/20 AND status != 2 )
    und

    Code:
    SELECT DISTINCT `id` FROM `visits` WHERE MONTH(visits.timestamp) = 11 AND YEAR(visits.timestamp) = 2020 AND visits.status > 9

    Beide Abfragen liefern mir eine Liste von IDs. Ich moechte nun ganz einfach, nur DIE IDs haben, die bei BEIDEN Abfragen als Ergebnis rausgegeben werden. Wie funktioniert das?

    Abfrage 1 liefert: B H J A C
    Abfrage 2 liefert: B A Y X Z
    Ergebnis soll sein: B A

    Vielen Dank fuer eure Hilfe.

    Viele Gruesse
    dsdxb

  • #2
    Damit baue ich Deine Ergebnisse:

    Code:
    test=*# with q1 as (select regexp_split_to_table('b,h,j,a,c',',') id), q2 as (select regexp_split_to_table('b,a,y,x,z',',')), alles as(select * from q1 union all select * from q2) select * from alles;
     id
    ----
     b
     h
     j
     a
     c
     b
     a
     y
     x
     z
    (10 rows)
    Was Du nun noch suchst:

    Code:
    test=*# with q1 as (select regexp_split_to_table('b,h,j,a,c',',') id), q2 as (select regexp_split_to_table('b,a,y,x,z',',')), alles as(select * from q1 union all select * from q2) select id from alles group by id having count(1) > 1;
     id
    ----
     b
     a
    (2 rows)
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      kürzere Lösung:

      Code:
      test=*# with q1 as (select regexp_split_to_table('b,h,j,a,c',',') id), q2 as (select regexp_split_to_table('b,a,y,x,z',',') id) select * from q1 inner join q2 using (id);
       id
      ----
       a
       b
      (2 rows)
      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

      Kommentar


      • #4
        Es tut mir leid, ich hab vergessen zu erwaehnen, dass es um MySQL und der Anwendung in PHP an sich geht. Ich wusste bis eben einfach nicht, dass das ein Unterschied macht. Hab jetzt nur grad deine Befehle gelesen und konnte absolut NICHTS damit anfangen (liegt aber an mir).

        Ich hab nach JOIN oder UNION gesucht, weiss aber da nicht wie ich die ganzen Befehle darin verwurschtel. Und UNION fuegt die beiden SELECTS ja nur zusammen, oder?


        edit: Habs grad geloest glaub ich. Wenn ich zwischen die beiden Abfragen ein INTERSECT packe, dann funktioniert es

        Code:
        SELECT t1.shop_id from shop_data AS t1 WHERE t1.shop_id NOT IN
        ( SELECT t2.shop_id from shop_invoice AS t2 WHERE time = 12/20 AND status != 2 )
        INTERSECT
        SELECT DISTINCT `shop_id` FROM `shop_visits` WHERE MONTH(shop_visits.timestamp) = 11 AND YEAR(shop_visits.timestamp) = 2020 AND shop_visits.status > 9

        Kommentar


        • #5
          ja, intersect geht auch:

          Code:
          test=*# with q1 as (select regexp_split_to_table('b,h,j,a,c',',') id), q2 as (select regexp_split_to_table('b,a,y,x,z',',') id) select * from q2 intersect select * from q1 ;
           id
          ----
           b
           a
          (2 rows)
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar

          Lädt...
          X