Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyciaganie i sortowanie wybranych wierszy z dwoch tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
czerwony2
Witam
Projektuje sobie mały serwis który będzie oparty na dwóch pod serwisach. Każdy pod serwis ma własną tabele w której będą zawarte newsy (tabele nazywają się przykładowo newsy_1 i newsy_2) Obie tabele są takie same, zawierają kolumny: id, temat, tresc i data_publikacji. Chciał bym aby na jednej stronie wyświetlić z tych dwóch tabel wybrane newsy razem, posortowane według daty dodania. I teraz nie wiem jak to zrobić poprawnie, czy: w karzdej tabeli dodać dodatkową kolumne np. o nazwie: gl w której będzie się wpisywało tak lub nie wyświetlaj na gł stronie, czy może stworzyć nową trzecią tabele w której będą zapisywane id newsow (i nie wiem może nazwy tabel z których newsy pochodzą) które maja być wyświetlane na str głównej.
Który sposób jest bardziej poprawny i czy da rady coś takiego zrobić w ogóle jednym zapytaniem? Jak ono powinno wyglądać aby dało porządny efekt i było jak najbardziej optymalne??
Za pomoc z góry dziękuję!
frickle
Ja bym zrobił jedną tabelę o konstrukcji:

ID | TEMAT | TREŚĆ | DATA_PUBL | STRONA | GŁÓWNA

gdzie STRONA określałoby z której strony pochodzi dana wiadomość a GŁÓWNA czy wyświetlać na stronie głównej.

wtedy załatwisz sprawę jednym zapytaniem z odpowiednimi parametrami, np:

  1. SELECT temat,tresc,data_publ FROM tabela WHERE strona = 1 ORDER BY data_publ

dla strony 1 lub 2 lub innych

  1. SELECT temat,tresc,data_publ FROM tabela WHERE glowna = 1 ORDER BY data_publ

dla strony głównej
Indeo
Żaden sposób nie jest poprawny. Poprawny sposób to taki, w którym miałbyś jedną tabele z newsami niezależnie od liczby podserwisów. W tabeli newsy wystarczy dodać pole odznaczające rekordy należące do poszczególnych serwisów. Zasada projektowania baz danych jest taka - nie wolno duplikować struktur - albo cytując jednego ze świętych chyba z 15 wieku "nie mnóżmy bytów" . Każde inne rozwiązanie to już taka protetyka. Jeśli masz wpływ na działanie serwisu i bazę danych szybciutko zrób jedną tabele z newsami. Dodatkowo możesz dodać pole które będzie zawierać informacje czy rekord ma sie pokazywać na głównej stronie. Nie ma sensu robić do tego oddzielnej tabeli, bo "wartość czy ma być na głównej" może być tylko jedna więc należy ją włączyć do struktury tabeli newsy.
czerwony2
Morze macie racje ze zamiast utrudniać sobie sprawę, lepiej ja ułatwiać winksmiley.jpg Pozdrawiam
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.