Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Pobieranie danych - Zapytanie "wirtualne" pola, Teoretycznie proste zapytanie SELECT * FROM, wartość kolumny jej nazwą
starcode
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 18.06.2006

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


Witam!

Mam pytanie, czy w mySQL istnieje możliwość wykonania zapytania w poniżej przedstawionym układzie tabel.

Mamy tabelę główną, np.:

  1. CREATE TABLE main(
  2. id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. name varchar(96)
  4. );


oraz tabelę poboczną 'z wartościami', przypisanymi do konkretnych rekordów z tabeli 'main':

  1. CREATE TABLE vars(
  2. id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. main_id int NOT NULL,
  4. varName varchar(96),
  5. varValue varchar(96)
  6. );


W tabeli `main` przechowuję sobie jakieś rekordy o unikalnym ID, natomiast w tabeli `vars` przechowuję rekordy posiadające unikalne ID oraz ID rekordu z tabeli `main`, w tej tabeli znajduje się ponad to nazwa zmiennej oraz jej wartość.

Przykładowo:
  1. INSERT INTO `main` VALUES(NULL, 'rekord główny 1');
  2. INSERT INTO `main` VALUES(NULL, 'rekord główny 2');
  3.  
  4. INSERT INTO `vars` VALUES(NULL, '1', 'zmienna1', '2000');
  5. INSERT INTO `vars` VALUES(NULL, '1', 'zmienna2', 'abc');
  6. INSERT INTO `vars` VALUES(NULL, '1', 'zmienna3', 'def');
  7. INSERT INTO `vars` VALUES(NULL, '1', 'zmienna4', 'jakas inna wartość');
  8.  
  9. INSERT INTO `vars` VALUES(NULL, '2', 'zmienna1', '2000');
  10. INSERT INTO `vars` VALUES(NULL, '2', 'zmienna5', 'kolejna wartosc');
  11. INSERT INTO `vars` VALUES(NULL, '2', 'zmienna6', 'wartosc zmiennej 6');
  12. INSERT INTO `vars` VALUES(NULL, '2', 'zmienna9', 'unikalna przykładowa wartosc');


Moje pytanie jest następujące, czy wogóle możliwe jest pobranie rekordów z tabeli 'main' posiadających "przypisane" w tabeli 'vars' wartosci dla pola `varValue`= "2000" oraz jednoczesnie dla pola `varName` wartosc `zmienna1`?

Wiem, że można te dwie tabele połączyć np. Left join'em, ale nazwy kolumn będą się powtarzać. Po głowie mi chodzi, aby możliwe było dynamiczne nazwanie kolumn `varName` wartosią pola `varValue` i już łatwo wyszukiwać np. WHERE vars.main_id=main.id AND zmienna1='2000'.

Da radę to zrobić w ten sposób?
Może macie inny pomysł. Byłbym wdzięczny za jakąś wskazówkę / pomoc.
Chodzi mi tutuaj o ładne i w miarę optymalne zapytanie mySQL.

Pozdrawiam.

Ktoś ma jakiś pomysł jak to zrobić? Czy może jest to nie wykonalne?

Ten post edytował starcode 27.03.2008, 15:02:02
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 21:16