Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Qt] QTableView - relacyjny widok z bazy danych
winuser
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 22.10.2010

Ostrzeżenie: (0%)
-----


Witajcie

Aktualnie piszę aplikację bazodanową co prawda nie w PHP, a w C++ z użyciem bibliotek Qt, baza danych to MySQL więc chyba dział dobry. I mam pewien problem nad którym się głowię. Mianowicie posiadam 2 tabele, jedna w której przechowywane są osoby w formie (dajmy na to lista klientów) :

  1. int user_id
  2. VARCHAR(40) name


natomiast druga tabela (dajmy na to do przechowywania listy zakupów):

  1. int user_id
  2. int product_id


Tabele z listą zakupów wyświetlam w widżecie QTableView, po wcześniejszym powiązaniu jej z QSqlTableModel. Chciałbym aby zamiast liczb w tabeli z listą zakupów (pole user_id) było wyświetlane automatycznie pole "name" z tabeli klientów. Niestety typy pól są inne (int vs varchar) i nie mam pomysłu jak coś takiego zrobić. Pomożecie ? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tiraeth
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Kolego winuser, drażnią mnie osoby, które nawet nie sięgają do oficjalnej dokumentacji Nokii nt. chociażby QSqlRelationalTableModel. Zanim następnym razem zadasz pytanie, przeglądnij dokumentację biblioteki, której używasz.

Zakładając, że masz:
users: user_id, name
user_products: user_id, product_id

I chcesz wyświetlić wszystkie rekordy z user_products, automatycznie dołączając zawartość tabeli users i ukrywając pole user_id, powinieneś zrobić coś takiego:

  1. QSqlRelationalTableModel *model = new QSqlRelationalTableModel;
  2. model->setTable("user_products");
  3. model->setRelation(1, QSqlRelation("users", "user_id", "name"));


Co oznacza: kolumna "1" w tabeli user_products jest kluczem obcym do tabeli users (gdzie kluczem głównym jest user_id) i jej zawartość ma zostać zastąpiona zawartością kolumny name z tabeli users.

Ponieważ temat nie ma nic wspólnego z MySQL, przenoszę do go Komputery i oprogramowanie.
Powód edycji: [tiraeth]: Autor sobie sam odpowiedział i raczył nawet zedytować swój post, więc zamknę temat.
Go to the top of the page
+Quote Post

Posty w temacie


Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 22:43