Chcę wybrać informacje kontaktowe (e-mail i numer telefonu) wszystkich pracowników pracujących między 2 przedziałami w sklepach typu Rynek i mają obecnie ponad 2 pracowników pracujących razem

Chcę to zrobić: Mam pracownika podmiotu, który jest podmiotem właściciela innego harmonogramu podmiotu, a mam podmiot "sklep" z atrybutem "Shopn" jako klucz obcy dla pracownika

Moja próba:

SELECT Email, Phonenumber  
FROM EMPLOYEE  
WHERE COUNT(  
        ID = (SELECT ID_Num  
            FROM SCHEDULE     
            WHERE Start_Time <= 12:07 AND End_Time >= 12:07)  
    AND Shopn = (SELECT Shopname  
            FROM SHOP  
            WHERE Shoptype = ‘market’)
    ) > 2

Otrzymuję błąd ORA-00934 Wszelka pomoc byłaby doceniona.

0
Sergio 22 listopad 2020, 19:38

1 odpowiedź

Najlepsza odpowiedź

Twoje zapytanie:

SELECT Email, Phonenumber
FROM EMPLOYEE
WHERE COUNT(
ID = (SELECT ID_Num
FROM SCHEDULE
WHERE Start_Time <= 12:07 AND End_Time >= 12:07)
AND Shopn = (SELECT Shopname
FROM SHOP
WHERE Shoptype = ‘market’) ) > 2

Zagadnienia :

  1. Wydaje się, że próbujesz wybrać identyfikator za pomocą operatora "=", który nie powiedzie się w przypadku wielu wpisów zwróconych przez wewnętrzne zapytanie.
  2. Nie można dodawać agregujących operatorów w klauzuli gdzie.

Prawdopodobna odpowiedź:

select Email, Phonenumber
FROM EMPLOYEE
WHERE ID in (SELECT ID_Num
FROM SCHEDULE
WHERE Start_Time <= '12:07' AND End_Time >= '12:07')
AND Shopn in (SELECT Shopname
FROM SHOP
WHERE Shoptype = 'market')
and (  
select count(distinct id)
FROM EMPLOYEE
WHERE ID in (SELECT ID_Num
FROM SCHEDULE
WHERE Start_Time <= '12:07' AND End_Time >= '12:07')
AND Shopn in (SELECT Shopname
FROM SHOP
WHERE Shoptype = 'market')) > 2;
1
user3315556 22 listopad 2020, 17:35