![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 17.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mam następujący problem. Powiedzmy, że posiadam dwie tabele, w jednej znajduje się id_uzytkownika i ok. 200 kolumn zawierających dane liczbowe odnośnie jakiegoś pomiaru przeprowadzonego przez tego użytkownika. Druga tabela zawiera id i nazwę tego użytkownika:
1 Tabela: id id_uzytkownika wartosc1 wartosc2 ... wartosc200 2 Tabela: id_uzytkownika nick Chciałbym teraz wyciągnąć dane z pierwszej tabeli, ale zamiast id_uzytkownika włożyć w to miejsce nick użytkownika. Wyszukałem, że takie rzeczy robi się za pomocą SELECT'a z zastosowaniem "as" do odnoszenia się do odpowiednich kolumn. Niestety przy tej ilości kolumn jeśli miałbym każdą z nich osobno adresować to chyba bym się zapisał na śmierć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Czy są jakieś metody na np. wyciąganie wszystkich kolumn oprócz skończonej ilości? Bądź jakiś inny sposób aby to przeprowadzić (z poziomu mysql)? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Prawdę mówiąc nie widzę sensu takiego rozdrobnienia. No chyba, że jeden użytkownik może mieć wiele nicków do jednego id, albo użytkownik o danym nicku może mieć wiele swoich id.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 17.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wygodniej mi przechowywać samo id w tej tabeli jak i innych niż za każdym razem nick.
To co podałeś nie rozwiązuje mojego problemu, gdyż potrzebuję, żeby kolumna z nickami zastąpiła kolumnę z id, a nie została dołączona na koniec. Bo potem muszę za pomocą php odpowiednio martwić się o wyświetlanie, a tak zrzuciłbym to na odpowiednie zapytanie. Mam nadzieję, że teraz jest w miarę jasne o co mi chodzi. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Podałaś.
Cytat Wygodniej mi przechowywać samo id w tej tabeli jak i innych niż za każdym razem nick. Ok, teraz rozumiem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Zawsze możesz stworzyć sobie widok, który wybierze Ci nick i wszystkie 200 wartości (sporo zachodu). Chyba że znowu czegoś nie rozumiem odnośnie zastąpienia. Chcesz mieć tylko te 200 prób i jeden nick, tak? Jeśli tak, to w czym przeszkadza (jeśli transfer, to ok) wybranie również identyfikatorów? Możesz się odwoływać do 200 wartości i do nicka, a resztę zostawić w spokoju. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 17.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Podałaś. Przepraszam. Cytat Zawsze możesz stworzyć sobie widok, który wybierze Ci nick i wszystkie 200 wartości (sporo zachodu). Chyba że znowu czegoś nie rozumiem odnośnie zastąpienia. Chcesz mieć tylko te 200 prób i jeden nick, tak? Jeśli tak, to w czym przeszkadza (jeśli transfer, to ok) wybranie również identyfikatorów? Możesz się odwoływać do 200 wartości i do nicka, a resztę zostawić w spokoju. Więc problem jest taki, że potem w pętli wrzucam te dane do <table> i muszę się martwić, aby w odpowiednie miejsce wrzucić zamiast id, nick. Niby mały problem, ale przy tej ilości danych robi się to nieprzyjemne. Dlatego wolałbym wyciągać dane z bazy już w takiej formie w jakiej potem chcę je wyświetlać. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Polecam w takim razie jeszcze raz widoki.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dycu, podczas wyświetlania stosujesz tablicę asocjacyjną, czy numeryczną? Bo jeżeli asocjacyjną, to ja nie wiem o co Ci chodzi.
Skoro masz tablicę np. Kod $row['a'], $row['b'], $row['c'] , to co Cię podczas drukowania jej elementów obchodzi, czy na jej końcu jest jakieś $row['xyz'] ?
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 17.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tablicę numeryczną, gdyż nie zamierzam się odwoływać do każdego elementu po nazwie (przy 200 elementach w linii to jednak problem), a tak lecę zwykłą pętlą. A jeśli kolejność jest zachwiana, to muszę się martwić tym, żeby zamiast id wrzucać w dane miejsce nick z ostatniej kolumny.
Wydaje mi się, że te widowki to rozwiązanie mojego problemu, muszę się tylko pobawić w stworzenie odpowiedniego (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Niestety muszę odświeżyć pytanie. Skonstruowałem coś takiego: Cytat CREATE VIEW ReturnData (id,nazwa,symbol,nazwaZespolu, 200 kolumn danych) AS SELECT id, nazwa, symbol, nazwaZespolu, 200 kolumn danych FROM ( SELECT * FROM Wroclaw LEFT JOIN Zaklady ON Wroclaw.zaklad_id = Zaklady.idZ LEFT JOIN Urzadzenia ON Wroclaw.urzadzenie_id = Urzadzenia.idU ) AS t; Czyli chciałem najpierw połączyć 3 tabele, a potem z tego wybrać i ustawić w odpowiedniej kolejności interesujące mnie dane. I jak się okazuje mysql nie pozwala na SELECT'y w podzapytaniach, więc znów jestem w lesie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Bo nie widzę innego sposobu na pobranie tego tak jak potrzebuję. Jakieś pomysły czy zostać przy ustawianiu kolumn w odpowiedniej kolejności już w php? Ten post edytował Dycu 17.07.2008, 16:08:21 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
a tak lecę zwykłą pętlą. Yhym. Mówisz, masz:
Voila' :] [edit] Aha, jeszcze jedno. Z doświadczenia wiem, że od Kod SELECT * FORM `table1`, `table2` WHERE `table1`.`t1_id` = `table2`.`t2_id` AND `table1`.`t1_id` > 100 wydajniej jest użyć: Kod SELECT * FROM `table1` LEFT JOIN `table2` ON `table1`.`t1_id` = `table2`.`t2_id` WHERE `table1`.`t1_id` > 100 Sposób taki daje nie tylko większą szybkość działania, ale i przejrzystość kodu, jeśli łączysz więcej tabel. http://dev.mysql.com/doc/refman/5.0/en/lef...timization.html Ten post edytował sowiq 17.07.2008, 17:02:23 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 17.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Kwestia optymalizacji zapytania swoją drogą... ale po co aż widok?? (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif)
W kwestii przypomnienia... gwiazdkę po SELECT można zastąpić wyspecyfikowanymi nazwami kolumn, które chcemy mieć w wyniku (IMG:http://forum.php.pl/style_emoticons/default/wstydnis.gif) czyli przykładowo SELECT pomiar.id,nick.nick,pomiar.pomiar1,....,pomiar.pomiar200 FROM pomiar, nick WHERE nick.id_uzytkownika = pomiar.id_uzytkownika; Ten post edytował miskorz 17.07.2008, 22:10:31 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Kwestia optymalizacji zapytania swoją drogą... ale po co aż widok?? (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif) W kwestii przypomnienia... gwiazdkę po SELECT można zastąpić wyspecyfikowanymi nazwami kolumn, które chcemy mieć w wyniku (IMG:http://forum.php.pl/style_emoticons/default/wstydnis.gif) czyli przykładowo SELECT pomiar.id,nick.nick,pomiar.pomiar1,....,pomiar.pomiar200 FROM pomiar, nick WHERE nick.id_uzytkownika = pomiar.id_uzytkownika; A przeczytałeś pierwszego posta? Bo wydaje mi się, że średnio... Cytat Niestety przy tej ilości kolumn jeśli miałbym każdą z nich osobno adresować to chyba bym się zapisał na śmierć smile.gif.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 23:00 |