Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Jak zbudować zapytanie, pobieranie danych z jednej tabeli tylko jeśli w innej brak danej wartości
jarekhunter
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 21.01.2010

Ostrzeżenie: (0%)
-----


Witam panowie i panie.
Przepraszam jeśli już ktoś o to pytał, szukam i znaleźć nie mogę.

Mam dwie tabele

artykuly
  1. artykul_id int(11) PRIMARY KEY AUTO_INCREMENT,
  2. nazwa varchar(255),
  3. tresc text,
  4. dodano date,
  5. autor int(11),
  6. kategoria_id int(11)


artykuly_temp
  1. art_tmp_id int(11) PRIMARY KEY AUTO_INCREMENT,
  2. artykul_id int(11),
  3. nazwa varchar(255),
  4. tresc text,
  5. dodano date,
  6. autor int(11),
  7. kategoria_id int(11)


Chce pobrać wyniki z tabeli artykuly tylko wtedy gdy żaden rekord w tabeli artykuly_temp nie wskazuje na artykul_id
czyli

np. artykuly
  1. artykul_id =1
  2. nazwa="jakaś_treść"
  3. tresc="przykładowe dane"


artykuly_temp
  1. art_tmp_id=22
  2. artykul_id =1
  3. nazwa="jakaś_treść"
  4. tresc="przykładowe dane"


W tym przypadku chcę by mi nie pobierało tego rekordu.
Mam nadzieje że wyjaśniłem to w miarę zrozumiale.
Napiszcie mi czy można to jakoś osiągnąć..
Dziękuję za pomoc i pozdrawiam serdecznie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jarekhunter
post
Post #2





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 21.01.2010

Ostrzeżenie: (0%)
-----


Skleciłem coś takiego tylko nie wiem czy to będzie optymalne rozwiązanie:
  1. SELECT art.nazwa, art.artykul_id FROM artykuly AS art LEFT JOIN artykuly_temp AS tmp ON (art.artykul_id = tmp.artykul_id) WHERE tmp.artykul_id IS NULL;


Zwraca mi to co potrzebuję tylko nie chcę by to się zbyt długo wykonywało questionmark.gif
Go to the top of the page
+Quote Post
bpskiba
post
Post #3





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Cytat(jarekhunter @ 10.07.2012, 18:19:57 ) *
Skleciłem coś takiego tylko nie wiem czy to będzie optymalne rozwiązanie:
  1. SELECT art.nazwa, art.artykul_id FROM artykuly AS art LEFT JOIN artykuly_temp AS tmp ON (art.artykul_id = tmp.artykul_id) WHERE tmp.artykul_id IS NULL;


Zwraca mi to co potrzebuję tylko nie chcę by to się zbyt długo wykonywało questionmark.gif


Nie wiem wprawdzie po co jest to WHERE, ale zapytanie wykonałeś to prawidłowo. Gratuluję!
Kwestia wydajności to zupełnie osobny temat. Proponuję google i hasło "sql index". To jest dość skomplikowane....

Ten post edytował bpskiba 10.07.2012, 19:22:09
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 04:50