Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL][PHP] Wypisanie rekordu z tabeli
Nataly7
post 22.10.2009, 22:49:04
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 22.10.2009

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


Witam
Jestem bardzo początkująca jeśli chodzi o PHP. Potrzebuję pomocy:

Mam bazę danych o nazwie: "moja baza" a w niej tabelę: "people"


  1. CREATE TABLE people (
  2. IDPerson int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. name char(30),
  4. surname char(30),
  5. salary float(8,2),
  6. IDTool int(11)
  7. );
  8.  
  9. INSERT INTO people(name, surname, salary) VALUES('Janko', 'Muzykant', 1800.24);
  10. INSERT INTO people(name, surname, salary) VALUES('Pies', 'Pluto', 1478.54);
  11. INSERT INTO people(name, surname, salary) VALUES('Koszalek', 'Opalek', 800.10);


i mam wypisać informację o najlepiej zarabiającym pracowniku (pole Salary).

Napisałam coś takiego:

  1. <?php
  2. $db = mysql_connect("127.0.0.1", "root","") or die ('BŁĄD');
  3. mysql_select_db("mojabaza");
  4.  
  5. $sql3 = 'select name, surname, max(salary) from people';
  6.  
  7. if (!$result = mysql_query($sql3))
  8. {
  9. die('Błąd');
  10. }
  11.  
  12. while($row = mysql_fetch_array($result))
  13. {
  14. echo "{$row['name']} {$row['surname']} {$row['salary']}";
  15. }
  16. var_dump($result);
  17. printf($result);
  18. ?>



Ale niestety nie wiem co jest nie tak. Połączenie z bazą jest, ponieważ kiedy chcę wyświetlić całą tabelę to wszystko jest ok.
Proszę o pomoc.
Go to the top of the page
+Quote Post
marcio
post 22.10.2009, 22:58:18
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Tzn co jest nie tak bo nie bardzo zrozumialem?

Ja bym zrobil to tak:

  1.  
  2. SELECT * FROM people WHERE salary = max(salary) ORDER BY id DESC
  3.  


Ten post edytował marcio 22.10.2009, 22:58:55


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
slawo123
post 22.10.2009, 23:01:56
Post #3





Grupa: Zarejestrowani
Postów: 40
Pomógł: 1
Dołączył: 21.08.2008

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


Wszystko masz ok oprócz wyświetlania wyniku.
Powinno być:

  1. echo "{$row['name']} {$row['surname']} {$row['max(salary)']}";


Bo nie wybierasz z bazy samego salary tylko max(salary)
Go to the top of the page
+Quote Post
Nataly7
post 22.10.2009, 23:03:13
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 22.10.2009

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


Nie wiem dlaczego, ale wciąż wyskakuje mi błąd i chyba właśnie w tym zapytaniu jest coś nie tak.
Go to the top of the page
+Quote Post
marcio
post 22.10.2009, 23:04:26
Post #5





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


racja mnie sie chyba pomylilo jesli dodasz do twojego zapytania:

  1.  
  2. max(salary) AS max
  3.  


Wtedy pod kluczek max bedzie wartosc max(salary) aczykolwiek moje rozwiazanie tez powinno dzialac.




Chyba ze nie dziala calosc



--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
slawo123
post 22.10.2009, 23:04:57
Post #6





Grupa: Zarejestrowani
Postów: 40
Pomógł: 1
Dołączył: 21.08.2008

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


A jaki konkretnie błąd ? Osobiście przetestowałem nto u siebie i wsio działa

Ten post edytował slawo123 22.10.2009, 23:05:50
Go to the top of the page
+Quote Post
Nataly7
post 22.10.2009, 23:14:04
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 22.10.2009

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


Mam coś takiego:

  1. <?php
  2. $db = mysql_connect("127.0.0.1", "root","") or die ('BŁĄD');
  3. mysql_select_db("mojabaza");
  4.  
  5. $sql3 = 'select name, surname, max(salary) from people';
  6.  
  7. if (!$result = mysql_query($sql3))
  8. {
  9. die('Błąd');
  10. }
  11.  
  12. while($row = mysql_fetch_array($result))
  13. {
  14. echo "{$row['name']} {$row['surname']} {$row['max(salary)']}";
  15. }
  16. var_dump($result);
  17. printf($result);
  18. ?>


i nadal nie działa. Trochę dziwne
Go to the top of the page
+Quote Post
slawo123
post 22.10.2009, 23:16:25
Post #8





Grupa: Zarejestrowani
Postów: 40
Pomógł: 1
Dołączył: 21.08.2008

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


Nie działa - ale czy biała strona jest czy jakiś błąd. A jeśli błąd to super by było gdybyś go nam tutaj zaprezentowała smile.gif
Go to the top of the page
+Quote Post
Nataly7
post 22.10.2009, 23:24:28
Post #9





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 22.10.2009

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


Wyświetla mi się tylko wyraz: Błąd ten, który występuje w pętli:

  1. if (!$result = mysql_query($sql3))
  2. {
  3. die('Błąd');
  4. }
Go to the top of the page
+Quote Post
slawo123
post 22.10.2009, 23:29:41
Post #10





Grupa: Zarejestrowani
Postów: 40
Pomógł: 1
Dołączył: 21.08.2008

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


zamień ten kod na
  1. if (!$result = mysql_query($sql3)
  2. {
  3. die('Blad: '.mysql_error());
  4. }


i podaj powstałą treść

Ten post edytował slawo123 22.10.2009, 23:30:57
Go to the top of the page
+Quote Post
Nataly7
post 22.10.2009, 23:36:44
Post #11





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 22.10.2009

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


Teraz pokazało się: Blad: Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause
Go to the top of the page
+Quote Post
marcio
post 22.10.2009, 23:55:43
Post #12





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Zrob te zapytanie tak jak ci pokazalem


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Nataly7
post 23.10.2009, 00:04:30
Post #13





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 22.10.2009

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


Napisałam:
  1. <?php
  2. $db = mysql_connect("127.0.0.1", "root","") or die ('BŁĄD');
  3. mysql_select_db("mojabaza");
  4.  
  5. $sql3 = 'SELECT* FROM people WHERE salary = max(salary) ORDER BY id DESC';
  6.  
  7. if (!$result = mysql_query($sql3))
  8. {
  9. die('Blad: '.mysql_error());
  10. }
  11.  
  12. while($row = mysql_fetch_array($result))
  13. {
  14. echo "{$row['name']} {$row['surname']} {$row['max(salary)']}";
  15. }
  16. var_dump($result);
  17. printf($result);
  18. ?>


Błąd: Blad: Invalid use of group function

Dobra nie wiem co jest nie tak, przecież to nie może być takie trudne.
Go to the top of the page
+Quote Post
marcio
post 23.10.2009, 00:06:58
Post #14





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


  1.  
  2. SELECT name, surname, max(salary) AS maxs FROM people
  3.  


Sprobuj jeszcze tak.




Do tego co dodajesz do kolumny IDTool?

W maxs bedzie max salary



--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
thek
post 23.10.2009, 07:51:52
Post #15





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A to nie prościej zrobić zapytanie:
  1. SELECT * FROM people ORDER BY salary DESC LIMIT 1
? Posortowanie malejące po dochodzie i zlimitowanie do 1 rekordu w wyniku smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Nataly7
post 25.10.2009, 17:33:59
Post #16





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 22.10.2009

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


thek dzięki, bardzo mi pomogłeś smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 01:47