Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Pobranie z jednej tabeli rekordow ktore nie sa w zaleznosciach w drugiej jednym zapytaniem
Octobus
post
Post #1





Grupa: Zarejestrowani
Postów: 259
Pomógł: 1
Dołączył: 3.07.2011

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


Przepraszam za niezrozumiały temat ale brakowalo mi słów. Otóż:
mam tabelę A => `ID`, `nazwa_towaru`
oraz tabele B => `ID`, `id_towaru`, `id_uzytkownika`

Tabela A to zwykle produkty a B to zestawienie ktory uzytkownik zamowil jakie produkty.

Chce sprytnie pobrać jednym zapytaniem rekordy z tabeli A (produkty) ktore nie kupil klient o okreslonym id, czyli co jeszcze moze kupic z calej gamy.
Pomijamy sens takiego rozwiązania, to tylko przykład.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tolomei
post
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


Przeanalizuj ten przykład:
  1. CREATE TABLE `produkty` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `nazwa` text NOT NULL,
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  6.  
  7. INSERT INTO `produkty` (`id`, `nazwa`) VALUES
  8. (1, 'mysz'),
  9. (2, 'klawiatura'),
  10. (3, 'monitor'),
  11. (4, 'głośniki');
  12.  
  13. CREATE TABLE `wybrane` (
  14. `id` int(11) NOT NULL AUTO_INCREMENT,
  15. `id_produkty` int(11) NOT NULL,
  16. `user` int(11) NOT NULL,
  17. PRIMARY KEY (`id`)
  18. ) ENGINE=MyISAM DEFAULT CHARSET=utf32;
  19.  
  20. INSERT INTO `wybrane` (`id`, `id_produkty`, `user`) VALUES
  21. (1, 2, 2),
  22. (2, 3, 2);
  23.  
  24. SELECT id FROM produkty
  25. WHERE NOT EXISTS
  26. (
  27. SELECT id_produkty
  28. FROM wybrane
  29. WHERE produkty.id = wybrane.id_produkty
  30. AND wybrane.user =2
  31. );


Zwraca id wszystkich niewybranych produktów użytkownika 2.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 23:45