Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Kilka zapytań:>
Forum PHP.pl > Forum > Gotowe rozwiązania > Skrypty obsługi baz danych
Freequ
Witam.
Potrzebuje skryptu, który z tabeli "reg" pobierze z kolumny "nick" podaną nazwę, po czym skopiuje z kolumny "ID" pobierze cyfre, przejdzie do bazy konta w tabeli "konta" znajdzie to podane ID i tyle.
Trochę zagmatwane, ale na pewno wykonalne.
Pozdrawiam! smile.gif
zelu
No i co zrobi jak znajdzie? Bo ta część jest dla mnie niejasna
Freequ
Znajdzie liczbe z kolumny pionowej "ID" w kolumnie poziomej, w której jest podany nick.
Może Paint to wyjaśni tongue.gif
http://img130.imageshack.us/img130/7201/beztytuudkq.png
zelu
  1. SELECT id, nick FROM reg WHERE nick = 'jakis nick'


Ewnetualnie
  1. SELECT id, nick FROM reg WHERE id = X

jeżeli chcesz pobrać po id

Jednak nadal nie rozumiem co ma się dziać po tym jak już pobierzesz dane z pierwszej tabeli?
Freequ
No tak, nie napisałem. Pośpiech..

Gdy wybierze już z pierwszej tabeli, ma przejść do drugiej. Znaleźć tam to wcześniej wybrane ID i w kolumnie STATUS zmienić na NO.
Prosiłbym jednak o gotowca, całego, lub same zapytania, wszystko sobie ułożęsmile.gif

Pozdrawiam.
zelu
  1. UPDATE konto SET STATUS = 'no' WHERE id = (SELECT id FROM reg WHERE nick = 'jakis nick' )
thek
O ja pierniczę... Po co taka jazda? Nie lepiej zrobić JOIN pomiędzy obiema tabelami i jedną z kolumn updateować?
  1. UPDATE tabela1 AS t1 LEFT JOIN tabela2 AS t2 ON t1.kolumna = t2.kolumna SET t1.pole_jakieś = 'wartosc' WHERE t2.pole_inne = 'cos tam' LIMIT 1
Pokombinuj jednak, choć z optymalizacją tego będzie już na pewno ciężko.
zelu
No niby można, ale co jest złego w prostym podzapytaniu? smile.gif Poza tym jest chyba bardziej czytelne niż mieszanie z JOINami smile.gif
thek
To porównaj czasy wykonania. Jedną z pierwszych zasad optymalizacji jest pozbywanie się podzapytań, ponieważ w większości przypadków spowalniają one całość zapytania (nie zawsze, ale bardzo często).
phpion
Cytat(thek @ 4.08.2010, 14:14:09 ) *
Jedną z pierwszych zasad optymalizacji jest pozbywanie się podzapytań

W Twojej wypowiedzi zabrakło na końcu: "skorelowanych". Faktycznie jednak należałoby wykonać pomiary empiryczne realizacji obu zapytań i wybrać to wydajniejsze.
Freequ
Zelu, jest problem.
Tabela reg jest w bazie user, a tabela konta w bazie konta.
Wiem, jestem nieznośny, ale potrzebuję to pilnie, mam nadzieję, że wytrzymasz ze mną tongue.gif
zelu
No to odpadają jakiekolwiek podazapytania i JOINy (a przynajmniej ja nie znam sposobu) winksmiley.jpg

Musisz to zrobić z wykorzystaniem PHP.

Połącz się z bazą user, pobierz ID (używając zapytania z podzaypytania).
Następnie połącz się z 2 bazą i zrób UPDATE pola o określonym ID.

A w ogóle co Ty za twór tworzysz, że potrzebujesz do tego 2 baz?


Pozdro
thek
Słuszna uwaga phpion - podzapytania skorelowane smile.gif
Jakie odpadają? Jeśli obie bazy są na tym samym serwerze i istnieje użytkownik, który ma prawa do obydwóch baz, to może tworzyć zapytania tego typu w postaci baza1.tabela1 LEFT JOIN baza2.tabela2 smile.gif To tylko kwestia uprawnień usera winksmiley.jpg Sam tak na localu robię gdy muszę przeparsować dane między bazami i wyniki pchnąć do jednej z nich.

Jeśli nie masz wspólnego to pozostaje jedynie po stronie PHP pisać skrypt, który wykona to. Pobierasz jednym zapytaniem z bazy pierwszej interesujący Cię id i jeśli on istnieje to robisz zapytanie do drugiej bazy by szukało rekordów z tym id. I uważaj na mysql_connect przy łączeniu z 2 bazami. Wiele osób tutaj ma problemy, bo nie wie jak to zrobić. Co jakiś czas potem jest problem i temat o tym na forum.
Freequ
thek, a możesz podać jakis przykład z tymi JOINami? snitch.gif Póki co piszę coś z tym pobieraniem rekordu, a potem szukanie dalej.
Użytkownik ma wszystkie prawa, jestem administratorem.
zelu
Cytat
zapytania tego typu w postaci baza1.tabela1 LEFT JOIN baza2.tabela2


No fakt, zapomniałem smile.gif
thek
To weź mój przykład z pierwszego posta w temacie, przerób do swoich potrzeb, a tam gdzie masz tabela1 daj baza1.tabela1, zaś gdzie tabela2 daj baza2.tabela2. Tutaj przydają się aliasy, bo przepisywanie tego w kółko byłoby już nieco upierdliwe winksmiley.jpg
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-2024 Invision Power Services, Inc.