Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

Jak pobrać nazwę kolumny?



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> PHP
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
nillvo



Dołączył: 10 Cze 2009
Posty: 67

PostWysłany: Sro Kwi 06, 2016 7:24 pm  OP    Temat postu: Jak pobrać nazwę kolumny? Odpowiedz z cytatem Pisownia

Chciałbym zapytać, w jaki sposób mogę poznać nazwę kolumny w tabeli, jeżeli nie znam jej indeksu. Mam na myśli następującą sytuację: Szukam wartości X w tabeli, która zawiera np. 20 różnych kolumn. Wartość X może znaleźć się w dowolnej z kolumn - ja nie mam pojęcia w której i potrzebuję pobrać jej nazwę. Podejrzewam, że pytanie jest bardzo proste, ale nie udało mi się znaleźć odpowiedzi, być może nie wiem jak poprawnie zdefiniować zapytanie tematu.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
marcin_an



Dołączył: 26 Maj 2005
Posty: 18822

PostWysłany: Sro Kwi 06, 2016 10:59 pm      Temat postu: Odpowiedz z cytatem Pisownia

Jeżeli nie znasz jej indeksu, to skąd wiesz, której kolumny nazwę chcesz pobrać?

Nazwy kolumn możesz pobrać albo metodą getColumnMeta (niestety metoda ta nie jest na razie w pełni wspierana), albo robiąc zapytanie do information_schema.columns (ale do tego musisz znać układ kolumn i nie zadziała to w przypadku czegokolwiek oprócz najprostszego selecta).

Niemniej pytanie jest bardzo dziwne. Przecież to ty, pisząc zapytanie, definiujesz kolejność informacji zawartych w wyniku. Zatem czego możesz nie wiedzieć? Co więcej: nazwy kolumn są tylko informacją dla ciebie, człowieka, programisty - żeby kod był czytelniejszy. Dla programu są zasadniczo bez znaczenia i nie może być sytuacji w relacyjnej bazie danych, by mogły mieć znaczenie.

_________________
Nieaktywny od 2017-04-01
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
nillvo



Dołączył: 10 Cze 2009
Posty: 67

PostWysłany: Pią Kwi 08, 2016 12:08 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Dzieki za odpowiedź.
Chyba Chciałem pójść na skróty. Podam konkretny przykład.

Mam bazę koniugacji czasowników. Nazwy kolumn to np: CT_JA_LP (czas teraźniejszy, osoba pierwsza, liczba pojedyncza). Szukam słowa "biegam" w całej tabeli.

Chciałem uzyskać informacje w której kolumnie wartość została znaleziona, dzięki czemu będę wiedział w jakiej
formie jest ten czasownik.

Ale zdałem sobie sprawę, że chyba po prostu muszę stworzyć warunki, jeśli nie znalazłeś w tabeli CT_JA_LP to szukaj w CT_JA_LM itd...

Chyba, że jest na to jakiś szybszy sposób ?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
marcin_an



Dołączył: 26 Maj 2005
Posty: 18822

PostWysłany: Pią Kwi 08, 2016 12:39 pm      Temat postu: Odpowiedz z cytatem Pisownia

Jest - zaprojektować prawidłowo bazę danych.

To jest jedna relacja, zawierająca dokładnie trzy atrybuty: klucz podstawowy, samą formę czasownika oraz informację o koniugacji. Opcjonalnie, jeśli jest taka potrzeba, czwarty atrybut powiązujący z relacją identyfikującą czasowniki.
Verbs
-----
* id int PK PK

Conjugation
-----------
* id int PK PK
- name varchar Nazwa danego wpisu

VerbsConjugation
----------------
* id int PK PK
- conjugation int FK@Conjugation Ref. do koniugacji
- verb int FK@Verbs Ref. do czasownika
- wordForm varchar Forma czasownika
Przykładowe dane:
== Verbs ==
== id =====
4
7
...

== Conjugation ===============
== id ===== name =============
11 PL/infinitive-sm
14 PL/infinitive-sf
16 PL/infinitive-sn
18 PL/infinitive-pm
19 PL/infinitive-po
21 PL/present-sm-1
24 PL/present-sf-1
30 PL/present-sn-1
31 PL/present-pm-1
33 PL/present-po-1
133 PL/present-sm-2
134 PL/present-sf-2
135 PL/present-sn-2
136 PL/present-pm-2
137 PL/present-po-2
138 PL/present-sm-3
139 PL/present-sf-3
140 PL/present-sn-3
141 PL/present-pm-3
142 PL/present-po-3
34 PL/past-sm-1
41 PL/past-sf-1
44 PL/past-sn-1
59 PL/past-pm-1
69 PL/past-po-1
... ...

== VerbsConjugation ===============================
== id ===== conjugation === verb == wordForm =====
117 11 4 być
141 14 4 być
142 16 4 być
144 18 4 być
149 19 4 być
150 21 4 jestem
151 24 4 jestem
160 30 4 jestem
171 31 4 jesteśmy
173 33 4 jesteśmy
174 133 4 jesteś
178 134 4 jesteś
190 135 4 jesteś
191 136 4 jesteście
192 137 4 jesteście
194 138 4 jest
199 139 4 jest
200 140 4 jest
201 141 4 są
202 142 4 są
203 34 4 byłem
204 41 4 byłam
210 59 4 byliśmy
220 69 4 byłyśmy
... ... ... ...
117 11 7 iść
141 14 7 iść
142 16 7 iść
144 18 7 iść
149 19 7 iść
150 21 7 idę
151 24 7 idę
160 30 7 idę
171 31 7 idziemy
173 33 7 idziemy
174 133 7 idziesz
178 134 7 idziesz
190 135 7 idziesz
191 136 7 idziecie
192 137 7 idziecie
194 138 7 idzie
199 139 7 idzie
200 140 7 idzie
201 141 7 idą
202 142 7 idą
203 34 7 szedłem
204 41 7 szłam
210 59 7 szliśmy
220 69 7 szłyśmy
... ... ... ...
Zauważ przy tym, że ten model daleki jest od optimum, bo dla wielu wpisów następuje niepotrzebna duplikacja. Lepiej byłoby mieć np. drzewiastą strukturę w relacji Conjugation. Ale na razie podaję przykład najprostszy w realizacji, bo - zdaje się - w tej chwili jeszcze nie bardzo rozumiesz podstawy relacyjnyh baz danych.

_________________
Nieaktywny od 2017-04-01
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
nillvo



Dołączył: 10 Cze 2009
Posty: 67

PostWysłany: Pią Kwi 08, 2016 6:07 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Dzięki za odpowiedź...aż mi głupio, nie wiem dlaczego wziąłem się za ten temat od tyłka strony. Najprostsze rozwiązania przychodzą do głowy najpóźniej, albo wcale :)

Przerobię tabelę na id + czasownik + rodzaj koniugacji.

Dzięki!
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> PHP Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.12589 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |