![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 9.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Pracuje obecnie nad połączeniem kilku tabel, a mianowicie muszę połączyć 7 tabel jako jedna zbiorczą ( do wyszukiwarki) niestety UNION odpada ponieważ niektóre bazy nie zawierają niektórych kolumn, bądź mają inną nazwę. Przykładowe tabele: t1: ID|tytul_pl|tytul_en|autor|sum_pl|sum_en|tresc|keywords_pl|keywords_en t2: ID|tytul|autor|autor|summary|keywords|tresc t3: ID|tytul_pl|tytul_en|autor|sum_pl|sum_en|tresc|keywords_pl Zdaję sobie sprawę że jest to chaotycznie zaprojektowane, niestety nie ja je tworzyłem. Za wszelkie wskazówki będę wdzięczny. Pozdrawiam, BlackHat |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
UNION jak najbardziej się tu sprawdzi. Kolumnom, które nie występują w danej tabeli dawaj wartości domyślne, np. NULL. Przykład:
Dzięki temu uzyskasz to, co chcesz. Pamiętaj tylko, że każdy SELECT musi zwrócić tyle samo kolumn i o takich samych typach. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 9.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za szybką odpowiedź, niestety problem jest trochę bardziej skomplikowany, ponieważ niektóre kolumny mają inne nazwy, bądź są w innym miejscu. zamieszczę dokładna kolejność.
tabela anestezjologia: id tytul_pl autor adres tytul_en sum_en keywords_en sum_pl keywords_pl tresc tabela balneo: id tytul_pl tytul_en autor adres summary_pl kewords_pl summary_en keywords_en tresc tabela farmako: id tytul_pl autor adres tytul_en sum_en keywords_en sum_pl keywords_pl tresc tabela newmedicine: id autor adres tytul summary keywords tresc W momencie gdy daje do sql komendę CODE SELECT tytul_pl, autor,tytul_en, sum_en,keywords_en, sum_pl,keywords_pl,tresc FROM anestezjologia UNION SELECT tytul_pl, autor,tytul_en, summary_en,keywords_en, summary_pl, kewords_pl,tresc FROM balneo WHERE MATCH(autor, tytul_pl, tytul_en, keywords_en, keywords_pl, tresc, summary_en, summary_pl) AGAINST ('fraza') Wyrzuca mi błąd CODE #1054 - Unknown column 'keywords_pl' in 'where clause' co jest spowodowane inna nazwą kolumny w tabeli balneo (keywords_pl to kewords_pl) Zastanawiam się jak to rozwiązać. Pozdrawiam, BlackHat Ten post edytował BlackHat 9.02.2010, 12:22:36 |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
bo WHERE dotyczy danego select a nie calego union. Where ma byc dla kazdego select
|
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
bo WHERE dotyczy danego select a nie calego union. Where ma byc dla kazdego select Albo można wrzucić całe UNION w podzapytanie czyli:
Wtedy warunek piszemy tylko raz. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 13:05 |