![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 1.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dzień dobry
Mam dwie tabele w bazie: reklama: id reklamodawca rodzaj wymagana_widownia ilosc_emisji ilosc_dni cena Rosnąco kara i kontrakty_reklamy: id id_gracza id_reklamodawcy czas_konca brakujace_emisje status Chciałbym wyświetlić wszystkich reklamodawców, z wyjątkiem tych, którzy mają trwający kontrakt (`status`='trwa') z danym graczem. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 1.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Ja stworzyłem takie coś:
SELECT * FROM reklamy LEFT JOIN kontrakty_reklamy ON reklamy.id = kontrakty_reklamy.id_reklamodawcy WHERE kontrakty_reklamy.id_gracza IS NULL OR kontrakty_reklamy.id_gracza !=1 OR kontrakty_reklamy.id_gracza =1 AND STATUS != 'trwa' LIMIT 0 , 30 Czy to jest poprawne? (próbowałem i wydaje mi się, że dokładnie o to mi chodziło, ale jestem Ciekaw opinii "z zewnątrz" Ten post edytował pagodzik 2.01.2014, 00:01:54 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Nie jest poprawne. Nigdy nie miesza się AND i OR bez używania nawiasów.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 1.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Takie zapytanie spełnia moje oczekiwania:
SELECT * FROM `reklamy` WHERE NOT EXISTS( SELECT id_reklamodawcy FROM `kontrakty_reklamy` WHERE `reklamy`.`id` = `kontrakty_reklamy`.`id_reklamodawcy` AND `kontrakty_reklamy`.`id_gracza`='1' AND `kontrakty_reklamy`.`status`='trwa' ); (akurat w tym przypadku id.gracza=1, oczywiście będzie to de facto id.gracza={$id_gracza}, ale to już szczegół |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Użyj LEFT JOINa z NULLem zamiast NOT EXISTS - będzie wydajniej. Duzo wydajniej.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Użyj LEFT JOINa z NULLem zamiast NOT EXISTS - będzie wydajniej. Duzo wydajniej.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 16:38 |