Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dwie tabele
Forum PHP.pl > Forum > Bazy danych
Manwe89
Witam. Mój problem jest następujący: otórz biorę się za przebudowę, długo już istniejącego forum na pewnej stronce. problem jest taki iż w bazie w polu "autor" zamiast widniec ID uzytkownika, widnieje jego nick. No i teraz chialem troszeczke przebudowac baze w nastepujacy sposob: dodalem do tabeli z odpowiedziami pole: owner_id. odpowiedzi siedza w tabeli "forum_odp". Mam też tabele "users" (pola: id, nick, pass,....). Chciałbym teraz ulozyc takie zapytanie ktore porowna pole autor z tabeli forum_odp, z polem nick z tabeli users i jezeli bedzie takie samo to przypisze polu owner_id w tabeli forum_odp ID konkretnego uzytkownika. Ktos moglby pomoc napisac takie zapytanie?;>
nospor
select oraz left join
W manualu mysql masz przyklady
Manwe89
to ze select to wiem. ale jakos nie moge sie polapac caly czas jak dziala to join smile.gif moze jakis dobry tutek ktos zna?;>
nospor
powiedzialem bys zajrzal do manuala.... tu tutek nie potrzebny
http://dev.mysql.com/doc/refman/5.0/en/join.html

  1. SELECT left_tbl.*, right_tbl.*
  2. FROM left_tbl LEFT JOIN right_tbl ON left_tbl.id = right_tbl.id


Cytat
Some join examples:
SELECT * FROM table1, table2;

SELECT * FROM table1 INNER JOIN table2 ON table1.id=table2.id;

SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id;

SELECT * FROM table1 LEFT JOIN table2 USING (id);

SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id
LEFT JOIN table3 ON table2.id=table3.id;
Manwe89
no i to jest wlasnie ta bolaczka smile.gif pyta sie ktos niekumaty o cos i zamiast mu wskazac droge to daje cos co dla niego jest czana magia smile.gif jakbys pojechal do mechanika bo Ci cos w samochodzie klekocze, to chicalbys zeby doradzil Ci co zrobic i powiedzial: wymien kolo, czy moze chcialbys zeby dal Ci po angielsku specyfikacje techniczna danego pojazdu?;>

no i idąc dalej ja poszukuję odpowiedniego złożenia zapytania UPDATE, bo przeciez chce zaktualizowac dane zawarte w tabeli forum_odp a nie tylko wylistowac odpowiednie rekordy smile.gif
nospor
dostales linka gdzie jest masa prostych przykladow. w poscie powyzej ci je nawet przytoczylem. Znajomosc angielskiego jest tu malo potrzebna smile.gif

ps: na zapytaniach mozesz sie pobawic, poeksperymentowac - nic nie zepsujesz.. a weź teraz jako laik poeksperymnetuj sobie na bebebach samochodu.... tongue.gif
Manwe89
no tak smile.gif o to chodzi ze eksperyment na 1,674 uzytkownikach i 254747 odpowiedzial w wypadku klapy moze byc dla mnei koncem pracy smile.gif samochod nie gryzie tongue.gif ze znajomoscia angielskiego u mnie nie ma problemu. W kazdym badz razie dzieki za pomoc i milego dnia zycze smile.gif
nospor
1) zwykly select z join nic ci nie zrobi
2) kto ci każe eksperymentowac na prawdziwych danych...

ps: to ty wkoncu chcesz przy wyswietlaniu danych dobrac sie do nazwy, czy ty chcesz zrobic update na istniejących danych: zamienic nazwe na id?
Bo ja caly czas mowie o pierwszym, a po ostatnich postach widze ze chyba masz na mysli to drugie smile.gif

edit down:
ech..... winksmiley.jpg
Manwe89
na podstawie tych samoych nickow w dwoch tabelach w tej drugiej ustawic pole owner_id rowne polu id z pierwszej smile.gif juz sobie poradzilem smile.gif przeciez to bylo takie proste biggrin.gif

do dokoptuje tutaj zeby tematu nie zaczynac. Chce pobrac z bazy 10 najnowszych wpisow (id jest auto increment)

SELECT * FROM forum_odp ORDER BY id DESC LIMIT 10

tylko ze jezeli jest 10 odpowiedzi do tego samego tematu to mi sie pobierze 10 ostatnich odpowidzi ogolnie. A ja chialbym otrzymac 10 tematow w ktorych ostatnio udzieloono odp. Jaki warunek mam dodac do zapytania aby zagwarantowac sobie ze pole topic w kazdym z otrzymanych rekorodow bedzie inne?snitch.gif
nospor
  1. SELECT * FROM (SELECT fo.*, max(fo.ID) maxid FROM forum_odp fo GROUP BY topic ORDER BY ID DESC LIMIT 10 ) d ORDER BY maxid DESC


A najlepiej by bylo, jakbys w tematach mial informacje, jaki jest ostatni post smile.gif
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.