Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie do jednej tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
Skwareknec
Witam serdecznie. Posiadam taką oto tabelę:
  1. mysql> SELECT * FROM przekazania;
  2. +----------------+-----------------------------+------------------+-----------+-----------------+-----------------+-------------+-------+
  3. | id_przekazania | nazwa | data_przekazania | id_mienia | id_uzytkownicy1 | id_uzytkownicy2 | czy_magazyn | uwagi |
  4. +----------------+-----------------------------+------------------+-----------+-----------------+-----------------+-------------+-------+
  5. | 1 | MAGAZYN -> 91051206081 | 2013-07-02 | 1 | 6 | 2 | 1 | NULL |
  6. | 2 | 91051206080 -> 91051206082 | 2013-07-10 | 3 | 1 | 3 | 0 | NULL |
  7. | 3 | 91051206080 -> MAGAZYN | 2013-07-13 | 2 | 1 | 6 | 1 | NULL |
  8. | 4 | 91051206083 -> 91051206080 | 2013-07-19 | 4 | 4 | 1 | 0 | NULL |
  9. | 5 | 91051206081 -> MAGAZYN | 2013-07-21 | 1 | 2 | 6 | 1 | NULL |
  10. | 6 | MAGAZYN -> 91051206081 | 2013-08-22 | 1 | 6 | 2 | 1 | NULL |
  11. | 8 | 91051206080 -> MAGAZYN | 2013-08-24 | 4 | 1 | 6 | 1 | NULL |
  12. | 9 | MAGAZYN -> 91051206081 | 2013-08-30 | 4 | 6 | 2 | 1 | NULL |
  13. | 10 | 91051206081 -> MAGAZYN | 2013-09-11 | 4 | 2 | 6 | 1 | NULL |
  14. +----------------+-----------------------------+------------------+-----------+-----------------+-----------------+-------------+-------+


Tabela ta przechowuje wszystkie przekazania mienia pomiędzy dwoma użytkownikami. Id_uzytkownicy1 zawsze przekazuje odbiorcy(id_uzytkownicy2) mienie(id_mienia). Zastanawiam się jak można pobrać z tej tabeli tylko te wiersze, aby można było odczytać jakie mienie posiada aktualnie np. użytkownik 2. Czyli w tym przypadku użytkownik 2 posiada mienie: 1. Za każdą podpowiedź będę niezmiernie wdzięczny smile.gif
mmmmmmm
  1. SELECT DISTINCT id_mienia FROM przekazania WHERE id_uzytkownicy2=2
Skwareknec
Dzięki za zainteresowanie smile.gif Niestety Twoje polecenie nie działa prawidłowo. Zwraca dwa id_mienia: 1, 4, a powinno jedynie zwracać id_mienia = 1.
b4rt3kk
Nie wyjaśniłeś problemu dostatecznie jasno. Czy są to dwie osobne grupy użytkowników? Z tego co widze po id raczej nie. Czy użytkownik może mieć tylko jedno mienie w jednym czasie? Jeśli trzeba uwzględnić, że dajmy na to user o id 1 dostał mienie o id 10, następnie oddał je innemu użytkownikowi, jednak znajduje się on na liście transakcji, tak więc ciężko będzie to zrealizować jednym zapytaniem, o ile w ogóle jest to możliwe.
Skwareknec
Wszyscy użytkownicy należą do tej samej grupy oraz każdy użytkownik może posiadać wiele rzeczy naraz. Chciałbym, aby wybierać tylko te mienia, które faktycznie użytkownik posiada, tzn. ktoś mu daną rzecz przekazał, a on tej rzeczy nikomu nie zwrócił/nie przekazał dalej. Proszę o Waszą pomoc, bo również wydaje mi się, że takie zapytanie będzie trudno napisać lub jest ono nie możliwe. Chcę aby bardziej doświadczone osoby wypowiedziały się w tej sprawie.
b4rt3kk
Myślę, że możesz to zrealizować od drugiej strony, tzn. najpierw sprawdzić, gdzie obecnie znajduje się dane mienie, czyli pobrać ostatnie przekazanie dla danego mienia.

  1. SELECT id_przekazania, id_uzytkownika2 FROM przekazania GROUP BY id_mienia ORDER BY data_przekazania DESC


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.