Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> [php/mysql] zapytanie do dwóch tabel
Blajo
post 8.12.2006, 14:04:42
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 7.08.2005
Skąd: Górny Śląsk

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


Mam następujący fragment kodu:

  1. <?php
  2. $q = "SELECT * FROM slowo WHERE id_domena='$id'"; 
  3. $r = mysql_query($q)
  4. or die("Query failed");
  5.  
  6. $i = 1;
  7. while ($ro = mysql_fetch_array($r)) {
  8.  
  9.  
  10. echo "
  11. <tr>
  12. <td class="zawartosc">$i</td>
  13. <td class="zawartosc">" . $ro["slowo"] ."</td>
  14. <td class="zawartosc">
  15. <table style="width: 120px; align: center;">
  16. <tr>
  17. <td style="width: 40px; text-align: center;"><b>L1</b></td>
  18. <td style="width: 40px; text-align: center;"><b>L2</b></td>
  19. <td style="width: 40px; text-align: center;"><b>L3</b></td>
  20. </tr>
  21. </table>
  22. </td>
  23. <td class="zawartoscsr">
  24. <table style="width: 120px; align: center;">
  25.  
  26. <tr>
  27. <td style="width: 40px; text-align: center;"><b>1</b></td>
  28. <td style="width: 40px; text-align: center;"><b>1</b></td>
  29. <td style="width: 40px; text-align: center;"><b>1</b></td>
  30. </tr>
  31. </table>
  32. </td>
  33. <td class="zawartoscsr">4,57</td>
  34. <td class="zawartoscsr">historia</td>
  35. <td class="zawartoscsr">8-12-2006</td>
  36. <td class="zawartoscsr">" . $ro["data_dodania"] ."</td>
  37. <td class="zawartoscsr">ble</td>
  38. </tr>";
  39. $i++;
  40. }
  41. ?>


I teraz mam pytanie: jak w miejscu L1, L2 i L3 umieścić dane, które są przechowywane w innej tabeli bazy danych?

Coś takiego:

1. słowo L11 L21 L31
2. słowo L12 L22 L32
3. słowo L13 L23 L33
itd.

Czyli do każdego słowa inne dane.
Struktura tabeli, z której dane chcę wyciągnąć jest następująca:

  1. CREATE TABLE `po` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `id_sk` varchar(11) NOT NULL DEFAULT '',
  4. `g` varchar(5) NOT NULL DEFAULT '',
  5. `o` varchar(5) NOT NULL DEFAULT '',
  6. `w` varchar(5) NOT NULL DEFAULT '',
  7. `data` date NOT NULL DEFAULT '0000-00-00',
  8. PRIMARY KEY (`id`)
  9. ) TYPE=MyISAM AUTO_INCREMENT=7 ;


Żeby jeszcze było "trudniej" potrzebuję wyciągnąć i wyświetlić tylko jedną, najmłodszą informacje dla danego id_sk.

Ma ktoś jakiś pomysł?


--------------------
tutoriale
Go to the top of the page
+Quote Post
wipo
post 8.12.2006, 15:12:42
Post #2





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


Np JOIN albo LEFT JOIN


--------------------
Go to the top of the page
+Quote Post
Blajo
post 10.12.2006, 22:38:41
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 7.08.2005
Skąd: Górny Śląsk

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


Ciężko mi to idzie...

Mam takie zapytanie:

  1. <?php
  2. $qp = "SELECT * FROM po WHERE id='$id'"; 
  3. $rp = mysql_query($qp)
  4. or die("Query failed2");
  5. ?>


i przy wyświetlanych słowach oczywiście mi się pokazują po słów, które mają w bazie id=1

jak skonstruować pętle (może zagnieżdżona?) i zapytanie, by wyświetlało tak:

słowo_1 Lsłowo_1 gdzie id słowa = 3 Lsłowo_2 gdzie id słowa = 3 Lsłowo_3 gdzie id słowa = 3
słowo_2 Lsłowo_1 gdzie id słowa = 4 Lsłowo_2 gdzie id słowa = 4 Lsłowo_3 gdzie id słowa = 4
słowo_2 Lsłowo_1 gdzie id słowa = 12 Lsłowo_2 gdzie id słowa = 12 Lsłowo_3 gdzie id słowa = 12

pomóżcie prosze...


--------------------
tutoriale
Go to the top of the page
+Quote Post
wipo
post 11.12.2006, 08:53:42
Post #4





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


Ogólny schemat na początek
Kod
<?php
$wykonaj=mysql_query("zapytanie do sql");
while($wynik=mysql_fetch_array($wykonaj)){
    print $wynik['pole1']." /// ".$wynik['pole2']." ///".$wynik[4]."<br>";
}
?>


Ten post edytował wipo 11.12.2006, 08:54:41


--------------------
Go to the top of the page
+Quote Post
Blajo
post 11.12.2006, 08:57:32
Post #5





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 7.08.2005
Skąd: Górny Śląsk

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


No to mam taką pętelke:

  1. <?php
  2. while ($ro = mysql_fetch_array($r)) {
  3. echo "
  4. <tr>
  5. <td class="zawartosc">$i</td>
  6. <td class="zawartosc">" . $ro["slowo_kluczowe"] ."</td>
  7. <td class="zawartosc">
  8. <table style="width: 120px; align: center;">
  9. <tr>
  10. <td style="width: 40px; text-align: center;"><img src="icon_google.gif"></td>
  11. <td style="width: 40px; text-align: center;"><img src="onet.ico"></td>
  12. <td style="width: 40px; text-align: center;"><img src="icon_msn.gif"></td>
  13. </tr>
  14.  
  15. <tr>
  16. <td style="width: 40px; text-align: center;"><b>" . $rpo["google"] ."</b></td>
  17. <td style="width: 40px; text-align: center;"><b>" . $rpo["onet"] ."</b></td>
  18. <td style="width: 40px; text-align: center;"><b>" . $rpo["wp"] ."</b></td>
  19. </tr>
  20. </table>
  21. </td>
  22. <td class="zawartoscsr">
  23. <table style="width: 120px; align: center;">
  24. <tr>
  25. <td style="width: 40px; text-align: center;"><img src="icon_google.gif"></td>
  26. <td style="width: 40px; text-align: center;"><img src="onet.ico"></td>
  27. <td style="width: 40px; text-align: center;"><img src="icon_msn.gif"></td>
  28. </tr>
  29. <tr>
  30. <td style="width: 40px; text-align: center;"><b>1</b></td>
  31. <td style="width: 40px; text-align: center;"><b>1</b></td>
  32. <td style="width: 40px; text-align: center;"><b>1</b></td>
  33. </tr>
  34. </table>
  35. </td>
  36. <td class="zawartoscsr">4,57</td>
  37. <td class="zawartoscsr">historia</td>
  38. <td class="zawartoscsr">" . $rpo["data"] ."</td>
  39. <td class="zawartoscsr">" . $ro["data_dodania"] ."</td>
  40. <td class="zawartoscsr"><a href="pozycje.php?id={$ro['id']}">dodaj</a><br /><a href="akcja.php?a=delsk&amp;id={$ro['id']}">usuń</a></td>
  41. </tr>";
  42. $i++;
  43. }
  44. echo "</table>";
  45. ?>



No i mój problem polega na tym, że w tych pogrubionych miejscach muszę wstawić cyferki równe id_sk z drugiej tabeli w bazie danych. Jak to wykonać?

coś się nie pogrubiło - chodzi o te miejsca: <b>" . $rpo["google"] ."</b>

Ten post edytował Blajo 11.12.2006, 08:58:14


--------------------
tutoriale
Go to the top of the page
+Quote Post
wipo
post 11.12.2006, 09:03:50
Post #6





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


A pokaż jak wygląda tabela jedna i druga i czym są połączone


--------------------
Go to the top of the page
+Quote Post
Blajo
post 11.12.2006, 09:10:14
Post #7





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 7.08.2005
Skąd: Górny Śląsk

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


Tabela 1:

  1. CREATE TABLE `pozycje` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `id_sk` varchar(11) NOT NULL DEFAULT '',
  4. `google` varchar(5) NOT NULL DEFAULT '',
  5. `onet` varchar(5) NOT NULL DEFAULT '',
  6. `wp` varchar(5) NOT NULL DEFAULT '',
  7. `data` date NOT NULL DEFAULT '0000-00-00',
  8. PRIMARY KEY (`id`)
  9. ) TYPE=MyISAM AUTO_INCREMENT=7 ;


Tabela 2:

  1. CREATE TABLE `slowo_kluczowe` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `id_domena` varchar(11) NOT NULL DEFAULT '',
  4. `slowo_kluczowe` varchar(100) NOT NULL DEFAULT '',
  5. `data_dodania` date NOT NULL DEFAULT '0000-00-00',
  6. PRIMARY KEY (`id`)
  7. ) TYPE=MyISAM AUTO_INCREMENT=47 ;


Tabela 2 zawiera słowa kluczowe, Tabela 1 pozycje tych słów. Do Tabeli 1 wpisywane jest id słowa kluczowego.


--------------------
tutoriale
Go to the top of the page
+Quote Post
wipo
post 11.12.2006, 09:40:21
Post #8





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


Będę strzelał bo nie bardzo zrozumiałem opis.
  1. <?php
  2. mysql_query("select * from pozycje p join slowa_kluczowe s on s.id=p.id");
  3. ?>

Zobacz czy dobrze to powiązałem


--------------------
Go to the top of the page
+Quote Post
Blajo
post 11.12.2006, 09:48:12
Post #9





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 7.08.2005
Skąd: Górny Śląsk

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


  1. $qp = "SELECT * FROM pozycje p join slowa_kluczowe s on s.id=p.id";
  2. $rp = mysql_query($qp) OR die("Query failed2");


wyświetla błąd "Query failed2"

jeszcze raz opisze problem.
mam pętelke, która mi wypisuje dane: słowa kluczowe z tabeli slowo_kluczowe. Obok tych słów kluczowych chcę wyświetlić ostatnią wartość liczbową z tabeli pozycje, w której wpisane jest id słowa kluczowego.
Dla każdego wiersza mają się wyświetlać inne wartości, bo w każdym nowy wierszu jest inne słowo kluczowe z innym ID.

Ten post edytował Blajo 11.12.2006, 09:48:36


--------------------
tutoriale
Go to the top of the page
+Quote Post
wipo
post 11.12.2006, 09:58:49
Post #10





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


Napisz
  1. <?php
  2. ?>

i się dowiesz czymu masz ten komunikat


--------------------
Go to the top of the page
+Quote Post
Blajo
post 11.12.2006, 10:11:52
Post #11





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 7.08.2005
Skąd: Górny Śląsk

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


Something is wrong in your syntax obok 'on s.id=p.id' w linii 1

ehhh już się w tym pogubiłem...


--------------------
tutoriale
Go to the top of the page
+Quote Post
wipo
post 11.12.2006, 10:22:25
Post #12





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


A wrzuć to zapytanie do phpmyadmin może on coś Ci podpowie bo ja błędu nie widzę


--------------------
Go to the top of the page
+Quote Post
Blajo
post 11.12.2006, 10:44:21
Post #13





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 7.08.2005
Skąd: Górny Śląsk

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


  1. zapytanie SQL: Dokumentacja
  2.  
  3. SELECT *
  4. FROM pozycje p
  5. JOIN slowa_kluczowe s ON s.id = p.id
  6. LIMIT 0, 30
  7.  
  8. MySQL zwrócił komunikat: Dokumentacja
  9. #1064 - Something is wrong in your syntax obok 'on s.id=p.id LIMIT 0, 30' w linii 1


--------------------
tutoriale
Go to the top of the page
+Quote Post
wipo
post 11.12.2006, 10:47:09
Post #14





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


A jakiego masz sql-a


--------------------
Go to the top of the page
+Quote Post
Blajo
post 11.12.2006, 10:50:37
Post #15





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 7.08.2005
Skąd: Górny Śląsk

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


MySQL 3.23.32


--------------------
tutoriale
Go to the top of the page
+Quote Post
wipo
post 11.12.2006, 10:54:28
Post #16





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


To chyba dla tego join-ów nie możesz obsłużyć.
Proponuje zrobić update to wersji 4.4 lub 5


--------------------
Go to the top of the page
+Quote Post
Blajo
post 11.12.2006, 10:58:21
Post #17





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 7.08.2005
Skąd: Górny Śląsk

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


no spoko, ale nie serwerze nie zrobie update'a

więc jak mam to zrobić inaczej?


--------------------
tutoriale
Go to the top of the page
+Quote Post
wipo
post 11.12.2006, 11:02:30
Post #18





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


Hmmm to możesz spróbować tak
  1. SELECT *
  2. FROM pozycje p, slowa_kluczowe s WHERE s.id = p.id


--------------------
Go to the top of the page
+Quote Post
Sabistik
post 11.12.2006, 11:03:46
Post #19


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

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


nie to żeby ale masz literówkę w zapytaniu ;p 'slowa_kluczowe '
Go to the top of the page
+Quote Post
Blajo
post 11.12.2006, 11:07:45
Post #20





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 7.08.2005
Skąd: Górny Śląsk

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


  1. $qp = "SELECT * FROM pozycje p, slowo_kluczowe s where s.id = p.id";
  2. $rp = mysql_query($qp) OR die(mysql_error());


żadnego błędu, ale cyferek też nie wyświetla.


--------------------
tutoriale
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
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: 18.06.2024 - 20:15