SQL Připojit Jeden Problém Mnoha vztahů

0

Otázka

Mám dvě tabulky produkt a výhrady, já chci načíst všechny produkty, které nejsou nejsou zahrnuty do rozsahu dat, jsem pomocí left join dosáhnout výhrady týkající se konkrétního produktu, věc je, že musím filtrovat podle časového období, a vrátit všechny výrobky, které nejsou zahrnuty v rozsahu, existuje několik produktů, a ve většině případů výrobky nejsou ve spojení s žádným rezervace, zabloudil jsem s tímto:

SELECT
    p.idProduct, p.name, p.description, p.latitude, p.longitude, p.address,
    p.qualification, p.favourite,p.idCategory,p.idCity, p.rules, p.health, p.politics,
    r.idReservation
FROM
    product p 
LEFT JOIN 
    city c ON c.idCity = p.idCity 
LEFT JOIN 
    reservation r ON r.idProduct = p.idProduct 
WHERE
    p.idCity = 1 
    AND ((r.endDate < '2021-11-20' AND r.startDate< '2021-11-28')  
         OR 
         (r.endDate > '2021-11-28' AND r.startDate > '2021-11-20'));

V tomto případě například tam nejsou výhrady na těchto datech, ale existuje několik produktů, které nemá vztah s žádnou rezervaci.

Jeden produkt může být ve vztahu k žádné nebo mnoho výhrad.

Jsem se ocenit jakýkoliv náznak o tom.

left-join sql
2021-11-22 23:35:16
1

Nejlepší odpověď

0

POKUD to, co tím myslíš (to není tak jasné, co potřebujete, nebo vaše logické) je, že rezervace není povinná, pak se vaše podmínky nemusí být povinné. Přesunout je DOLEVA PŘIPOJIT

select p.idProduct, p.name, p.description, p.latitude, p.longitude, p.address,
             p.qualification, p.favourite,p.idCategory,p.idCity, p.rules, p.health, p.politics,
             r.idReservation
             from product p 
            LEFT JOIN city c ON c.idCity = p.idCity 
            LEFT JOIN reservation r ON r.idProduct = p.idProduct AND ( 
            (r.endDate < '2021-11-20' AND r.startDate< '2021-11-28') OR 
            (r.endDate > '2021-11-28' AND r.startDate > '2021-11-20') 
            )
            where p.idCity = 1 
            ;
2021-11-22 23:52:56

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................