Łączenie kilku tabel

Problemy związane z tworzeniem i zarządzaniem programami bazo-danowymi.
Regulamin działu


Zadając pytania dotyczące baz danych należy podawać szczegółowe informacje o bazie danych nad którą się pracuje, czyli:

  • Rodzaj serwera bazodanowego: MySql, MSSQL, Oracle itp.
  • Wersja bazy danych
  • Technologia bazodanowa używana w programie: ADO, DbExpress, InterBase
  • Komponenty użyte do zestawienia połączenia: ADOConnection, SqlConnection
  • Sposób zestawienia komponentów bazodanowych np. DataSet - DataSource - DbGrid lub DataSet - DataSetProvider - ClientDataSet - DataSource - DbGrid
  • Jeżeli używane były biblioteki innych firm niż Borland, CodeGeer i Embarcadero proszę podać ich nazwy, numer wersji i adres źródła.

Łączenie kilku tabel

Nowy postprzez mate006 » czwartek, 17 czerwca 2010, 10:56

Witam
Od dwóch dni nad tym siedze i mimo przeszukiwania internetu nie znalazłem odpowiedzi na mój problem

Mianowicie mam 4 tabele
- zlecenia (główna tabela) a w niej pola: id, id_klienta, id_magazynu
- klienci a w niej: id_klienta, nazwisko, imie, id_kodu
- kody a w niej: id_kodu, kod, miasto
- magazyn id_magazynu, nazwa, sztuk, itd.

Chodzi mi o to aby w DBGrid zamiast poszczególnych id wyświetlało
- zlecenia (id, nazwisko imie, nazwa, sztuk)
itd

Prosiłbym o podpowiedzenie mi rozwiązania tej zagaadki.
Avatar użytkownika
mate006
Intelektryk
Intelektryk
 
Posty: 142
Dołączył(a): wtorek, 2 marca 2010, 14:12
Podziękował : 7
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Premium 64
Kompilator: Embarcadero® C++Builder® XE
Gadu Gadu: 0
    Windows 7Firefox

Re: Łączenie kilku tabel

Nowy postprzez Android » czwartek, 17 czerwca 2010, 12:05

Na jakiej bazie pracujesz?
Do łączenia tabel wykorzystujesz JOIN ON
http://pl.wikipedia.org/wiki/SQL_typy_zlaczen#Notacja_JOIN_ON <- tutaj masz ogólną postać, poszukaj dokładnego opisu do swojej bazy danych.
Avatar użytkownika
Android
Bladawiec
Bladawiec
 
Posty: 46
Dołączył(a): poniedziałek, 5 kwietnia 2010, 16:51
Podziękował : 16
Otrzymał podziękowań: 2
System operacyjny: Windows 7 Pro x64
Kompilator: C++ Builder XE2
Gadu Gadu: 0
    Windows 7Firefox

Re: Łączenie kilku tabel

Nowy postprzez mate006 » czwartek, 17 czerwca 2010, 13:11

Dzięki Ci wielkie

Pracuję na bazie mysql,
Z tym łączeniem doszedłem do ładu tylko mam jeden problem jak połączyć imie i nazwisko lub kod i miasto zeby wyswietlało mi w jednej kolumnie
Avatar użytkownika
mate006
Intelektryk
Intelektryk
 
Posty: 142
Dołączył(a): wtorek, 2 marca 2010, 14:12
Podziękował : 7
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Premium 64
Kompilator: Embarcadero® C++Builder® XE
Gadu Gadu: 0
    Windows 7Firefox

Re: Łączenie kilku tabel

Nowy postprzez Android » czwartek, 17 czerwca 2010, 14:08


Za ten post autor Android otrzymał podziękowanie od:
mate006
Avatar użytkownika
Android
Bladawiec
Bladawiec
 
Posty: 46
Dołączył(a): poniedziałek, 5 kwietnia 2010, 16:51
Podziękował : 16
Otrzymał podziękowań: 2
System operacyjny: Windows 7 Pro x64
Kompilator: C++ Builder XE2
Gadu Gadu: 0
    Windows 7Firefox

Re: Łączenie kilku tabel

Nowy postprzez mate006 » piątek, 18 czerwca 2010, 14:56

Jak to zwykle w programowaniu bywa, znowu pojawiły się błędy,

Błąd 1. Jaka może być przyczyna błędnego sortowania tzn. gdy dodaje opcje DESC nie sortuje mi odwrotnie, poprostu jakby ta opcja nie działała
Błąd 2. Chciałbym aby cena była wyświetlana z dwoma miejscami po przecinku z dopisaniem ' zł' część zapytania odpowiadająca za to wygląda tak: CONCAT(Round(z.cena, 2), ' zł') jednak wyskakuje mi błąd

"field name cannot be longer then 31 characters. try setting objectview to true to the dataset"

Ustawiłem true w ObjectView lecz nad wyskakuje ten błąd

Doszedłem do ładu z tym, tzn samo wyszło podczas programowania, jednak chciałbym spytać czy istnieje jakaś funkcja która by dodawała te dwa miejsca po przecinku?

Ja wymyśliłem np zeby zamiast typ pola double dać varchar tylko wtedy sortuje mi jako tekst,

Bardzo bym prosił o pomoc,
Avatar użytkownika
mate006
Intelektryk
Intelektryk
 
Posty: 142
Dołączył(a): wtorek, 2 marca 2010, 14:12
Podziękował : 7
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Premium 64
Kompilator: Embarcadero® C++Builder® XE
Gadu Gadu: 0
    Windows 7Firefox

Re: Łączenie kilku tabel

Nowy postprzez Corvis » wtorek, 29 czerwca 2010, 14:23

Wklej tu całe zapytanie SQL
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaSafari

Re: Łączenie kilku tabel

Nowy postprzez mate006 » sobota, 28 sierpnia 2010, 16:15

Już sobie poradziłem z tym problemem, chodziło o to że nazwa pola nie może miec wiecej nic 31 znaków, a jak dawałem CONCAT(Round(z.cena, 2), ' zł') to mi przekraczało ten limit, i sobie pousuwałem kilka niepotrzebnych spacji, jest tez mozliwosc wykorzystania warunku IF np

Kod: Zaznacz cały
if (z.cena > 0, CONCAT(Round(z.cena, 2), ' zł'), '') AS 'cena'


no i z tymi dwoma miejscami po przecinku też doszedłem, po prostu jesli pole jest typu float czy int to zawsze zaokragla, wystarczyło zastosowac przekształcenie na tekst i wszystko pieknie działa, moja baza zawiera juz ponad 10000 rekordów i wszystko smiga tip top

Pozdrawiam
Avatar użytkownika
mate006
Intelektryk
Intelektryk
 
Posty: 142
Dołączył(a): wtorek, 2 marca 2010, 14:12
Podziękował : 7
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Premium 64
Kompilator: Embarcadero® C++Builder® XE
Gadu Gadu: 0
    Windows 7Firefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Bazy danych

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 4 gości

cron