Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql] SELECT i bardzo dużo kolumn
Dycu
post
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)?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Dycu
post
Post #2





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
Go to the top of the page
+Quote Post
sowiq
post
Post #3





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Cytat(Dycu @ 17.07.2008, 17:08:00 ) *
a tak lecę zwykłą pętlą.

Yhym. Mówisz, masz:

  1. <?php
  2. // $row - tablica asocjacyjna
  3. foreach($row as $id => $v){
  4. if($id != "login") // login - nazwa kolumny z loginem
  5. echo "Pomiar: ".$id.". Wynik: ".$v."<br>\n";
  6. }
  7. ?>


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
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: 11.10.2025 - 10:08