• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z zapytaniem do bazy mySQL

Object Storage Arubacloud
0 głosów
166 wizyt
pytanie zadane 27 listopada 2015 w SQL, bazy danych przez michal Mądrala (5,560 p.)
Witam,

Mam tabele: id, id_user, data, wpis1, wpis2. Najpierw za pomoca INSERT user dodaje rekord do tabeli i zapisuje dane id automatycznie, id_user: swoje id, data ustawia sie sama w momencie dodania rekordu i wpis1 i powiedzmy że wylogowywuje sie. Przynastepnym logowaniu chciałbym zeby mozna było zrobić UPDATE, aby user mogł dodać wpis2 do ostatniego swojego rekordu. Jak napisac zapytanie które: Wybierze id_user i jednoczesnie wybierze daty, posegreguje je, wybierze ostatnia i zrobi UPDATE w polu wpis2.

Trochu to zawiłe, ale mam nadzieje ze w miarę jasno sprecyzowałęm o co mi chodzi.

3 odpowiedzi

0 głosów
odpowiedź 27 listopada 2015 przez jeremus Maniak (59,720 p.)
-- proponuje cos takiego

update tabele set 'co tam chcesz ustawic' where id = (select max(id) where id_user='twoje id')

 

0 głosów
odpowiedź 27 listopada 2015 przez michal Mądrala (5,560 p.)

Nie działa to zapytanie. Wyskakuje błąd: Notice: Undefined property: mysqli::$conect_errno. 

Ja próbowałem zrobić to po dacie:

"UPDATE tabela SET co ustawic WHERE data=(SELECT data FROM tabela WHERE id_user='$id_user' ORDER BY data DESC LIMIT 1) AS temp";

W tym wypadku też ten sam błąd.

komentarz 27 listopada 2015 przez reCAPCHTA hater Początkujący (380 p.)

Literówka ?!
Masz coNect zamiast coNNect ?

0 głosów
odpowiedź 27 listopada 2015 przez michal Mądrala (5,560 p.)
Literówka poprawiona, błędu już nie ma, ale zapytanie jak nie działało takdalej nie działa :(
komentarz 28 listopada 2015 przez jeremus Maniak (59,720 p.)
Zrób tak jak napisałem . to jest najprostsza składnia zapytania. Przetestuj najpierw w gołym mysql-u a potem z poziomu php-a, może żle przekazujesz parametry poniżej działający przykład... update operacje set opr_kwota=8989 where opr_id=(select max(opr_id) from operacje where opr_knt_id=1001)
komentarz 28 listopada 2015 przez michal Mądrala (5,560 p.)

Też niestety nie działa. mySQL wyrzuca błąd: #1093 - You can't specify target table 'przejazdy' for update in FROM clause 

komentarz 28 listopada 2015 przez jeremus Maniak (59,720 p.)
pokaż cale zapytanie - te testowane na mysql'u
komentarz 28 listopada 2015 przez jeremus Maniak (59,720 p.)
faktycznie w mysql'u skłądnia update nie  "lubi" subquery tej samej tabeli co robisz update

trzeba złączyć jąz sama sobą, podam przykłąd jak odpalę mysql'a na swoim kompie
komentarz 28 listopada 2015 przez jeremus Maniak (59,720 p.)

oto przykład - trzeba dodatkowy select

 

UPDATE `edw_posts` a set a.ooo=5 where a.id=( select x from ( select max(b.id) as x from `edw_posts` b where b.nazwa="BELA") as t2 )

 

komentarz 28 listopada 2015 przez michal Mądrala (5,560 p.)

Teraz to sie twoche zakrecilem i nie wiem do konca jak to podstawić do tego wzroru ktory mi podaleś.

Ja ułożyłem to zapytanie tak;

UPDATE przejazdy SET miejscowosc_przyjazd='$miejscowosc', km_przyjazd=$przebieg WHERE id_przejazd=(SELECT MAX(id_przejazd) WHERE id_kierowcy=$id_kierowcy)

 

komentarz 28 listopada 2015 przez jeremus Maniak (59,720 p.)
UPDATE przejazdy SET miejscowosc_przyjazd='$miejscowosc', km_przyjazd=$przebieg WHERE id_przejazd= (select idx from (SELECT MAX(id_przejazd) as idx from przejazdy b WHERE b.id_kierowcy=$id_kierowcy) as t2 )

 

--- cos takiegojeśłi się nie walnąłem
komentarz 28 listopada 2015 przez michal Mądrala (5,560 p.)
Teraz wszystko śmiga wzorowo. Dzięki wielkie za pomoc i za cierpliwość. Jedyną bolączką jest teraz to że nie do końca rozumiem jak to zapytanie działa. Uczę się php z mysql, i wymiśliłem sobie taką mała aplikazje która przelicza kilometry przejazdów i w praniu okazało się że takie skomplikowanie zapytanie trzebabyło ułożyć. Znasz może jakiś żródło wiedzy gdzie można cos zaczerpnąć odnośnie np. taki zapytań, jakaś strona, lub książka?
komentarz 28 listopada 2015 przez jeremus Maniak (59,720 p.)
akurat w przypadku innych odmian SQL  ( t-sql na SQL Misrosoft , skłądnia jest prosta , to ta pierwsza w wersja ) i ją chyba rozumiesz ..

niestety mysql jej nie łyka  bo nie uznaje skłądni gdzie w podzapytaniu jest tabela modyfikownana, stąd dodatkowy select który właściwie podstawia max(id) , to takeie obejście na potrzeby mysql'a

co do materiałów to jest tego dużo w necie..,n nie znam jednego ulubionego miejsca

porad szukaj  używaja języka angielskiego - więcej znajdziesz ...

Podobne pytania

0 głosów
2 odpowiedzi 167 wizyt
pytanie zadane 22 marca 2016 w PHP przez Lucrais Obywatel (1,270 p.)
+1 głos
2 odpowiedzi 320 wizyt
0 głosów
2 odpowiedzi 133 wizyt
pytanie zadane 4 października 2017 w SQL, bazy danych przez Mavimix Dyskutant (8,390 p.)

92,583 zapytań

141,434 odpowiedzi

319,669 komentarzy

61,966 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...