Polecamy sklep komputerowy sprawdź sam.
Odpowiedz 
 
Ocena wątku:
  • 3 Głosów - 2.33 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Dwie tablice w jednym zapytaniu
Autor Wiadomość
kleer94 Offline
Użytkownik

Ilość postów: 7
Dołączył: 11-07-2010
Reputacja: 0
Post: #1
Dwie tablice w jednym zapytaniu
Mam pytanie o zapytanie SQL, które napewno przyspieszy działanie skryptu.
Jeśli chodzi o sam język, to znam tylko te podstawowe instrukcje zawarte w tutorialu na wikibooks.
Próbowałem z "JOIN", jednak to mnie troche przerosło, a na dodatek nie wiedziałem, czy to w ogóle ona powinna być zastosowana w takim miejscu.
jeśli chodzi o ilość rekordów to chyba może to być instrukcja "COUNT", jednak nie wiem jak podpiąć jej wynik.

W skrypcie mam dwie tabele, gdzie w pierwszej na nowości o nazwie "entries", oraz drugą na komentarze, w której pole "entry" oznaczało id wpisu, do którego się odnosi komentarz. Instrukcje tworzące, żeby było jaśniejWink.

Kod:
CREATE TABLE `entries` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`title` VARCHAR(60) NOT NULL,
`date` VARCHAR(60) NOT NULL,
`preface` TEXT NOT NULL,
`content` TEXT NOT NULL,
`image` VARCHAR(35) NOT NULL DEFAULT 'foto.png',
UNIQUE(
`title`)
) DEFAULT CHARSET=utf8;

CREATE TABLE `comments` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`nick` VARCHAR(30) NOT NULL,
`date` INT UNSIGNED NOT NULL,
`comment` TEXT NOT NULL,
`ip` VARCHAR(15) NOT NULL,
`entry` INT NOT NULL) DEFAULT CHARSET=utf8;

Na stronie (tworzonej w php) miałem "index.php" z wpisami, pod którymi były odnośniki do komentowania. Ten link miał postać tekstu o treści "Czytaj więcej...". Problem pojawił się wtedy, gdy zachciałem mieć odnośnik w postaci "Komentarze (69)", gdzie liczba 69 oznaczałaby liczbę pozostawionych komentarzy. Więc moje pytanie brzmi:
Czy da się za jednym razem pobrać ( i jak) wiersze z tabeli "entries" dołączając do każdego pole o nazwie "comms", w którym byłaby ilość rekordów z tabeli "comments" o id równych id danego wiesza z tabeli "entries".
Czyli innymi słowy: w tabeli "entries" jest 69 wierszy o polu "entry" równym "5". Każdy z nich jest komentarzem do wpisu o id=5. W tabeli "entries" jest tylko jeden wiersz o "id=5".
Chciałbym po prostu aby do wynikowej tabeli "SELECT * FROM `entries`;" dodać kolumnę np."comms",w której będzie ilość rekordów z tabeli "comments" o id równym id tego z pobieranego z tabeli "entries"(czyli kolumna "comm" będzie zawierała ilość komentarzy do tego wpisu.

Dla mnie jest to po prostu QUEST, ale wierzę w to, że jesteście lepsi ode mnie i wiecie jak to zrobić(jeśli da rade). Sorry za powtórzenia, ale wtedy chyba jest czytelniejTongue. Liczę na was, że mi pomożecie. Rolleyes Nie jest to żadna praca domowa, tylko zagadnienie nad którym dużo się zastanawiałem, szukałem w google nawet po angielsu próbująć coś z siebie wykrzesać oraz samemu szukając odpowiedzi na tutorialach SQL, które najczęściej były i tak "in English". Pozdrowienia :*.
(Ten post był ostatnio modyfikowany: 20-07-2010 01:44 przez kleer94.)
20-07-2010 01:27
Znajdź wszystkie posty użytkownika Zacytuj ten post w odpowiedzi
Odpowiedz 


Skocz do: