Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] jak przemnożyć dwie tabele
Forum PHP.pl > Forum > Przedszkole
dentopolis
mam dwie tabele z wartościami liczbowymi. w jaki sposób można je przemnożyć czyli wezlyniepowiekszone z tabeli badanie pomnożyć przez wezlyniepowiekszone z tabeli choroby.



Niree
$q1 = zapytanie("SELECT `wezlyniepowiekszone` FROM `badanie` WHERE `id` = 'JAKIES ID'");
$row1 = $q1->fetchrow();

$q2 = zapytanie("SELECT `wezlyniepowiekszone` FROM `choroby` WHERE `id` = 'JAKIES ID'");
$row2 = $q2->fetchrow();

echo $row1['wezlyniepowiekszone'] * $row2['wezlyniepowiekszone'];

Ewentualnie jeśli nie chcesz pobierać tylko jednego rekordu, to wrzuć wszystko w pętle, a na końcu pomnóż.
Pyton_000
@Niree trochu bez sensu pobierać to 2 zapytaniami.

@dentopolis co chcesz mieć w wyniku? Rozumiem że dla każdego rekordu z tabeli `badanie` chcesz mieć tyle rekordów wynikowych ile jest wpisów w `choroby`? Jeśli tak to:
Kod
SELECT `badania`.`wezlyniepowiekszone`*`choroby`.`wezlyniepowiekszone` FROM `badania`, `choroby` WHERE

Takie zapytanie wygeneruje Ci iloczyn kartezjański czyli wynikiem będą wiersze połączone każdy z każdym. więc dla 1 i 2 wynik da 2 wiersze, dla 2 i 2 da 4 itd.
dentopolis
w wyniku potrzebuję nową tabelę w której wartościami są iloczyny tych samych objawów, nie każdy z każdym czyli:

wezłychłonneniepowiększone (z tabeli badanie) x wezłychłonneniepowiększone (z tabeli choroby)
gorączka (z tabeli badanie) x gorączka (z tabeli choroby)
trueblue
Cytat(dentopolis @ 23.03.2017, 16:26:50 ) *
w wyniku potrzebuję nową tabelę w której wartościami są iloczyny tych samych objawów, nie każdy z każdym czyli:

wezłychłonneniepowiększone (z tabeli badanie) x wezłychłonneniepowiększone (z tabeli choroby)
gorączka (z tabeli badanie) x gorączka (z tabeli choroby)

I dokładnie to otrzymasz dzięki rozwiązaniom, które pokazał Niree i Pyton_000.
Natomiast Pyton_000 miał na myśli, to, że nie wskazując, który wiersz z jednej tabeli ma być przemnożony z którym wierszem z drugiej tabeli, otrzymasz iloczyn kartezjański (każdy z każdym - ale wiersz, a nie kolumny).
Twoim pytaniem jest jak przemnożyć wiersze, a nie tabele. Ale nadal nie wiadomo na jakiej zasadzie - który wiersz z którym. Wygląda na to, że chcesz przemożyć wiersz dotyczący pacjenta z tabeli badania ze wszystkimi wierszami z tabeli choroby. Jeśli tak jest, to do zapytania Pyton_000 dodajesz warunek na id pacjenta. De facto otrzymasz i tak iloczyn kartezjański, ale ograniczony poprzez wybór z tabeli badania.
dentopolis
jak więc powinien wyglądać przykładowy kod wg Niree? (mimo wszystko wolę dłuższe ale takie rozwiązanie).

  1. <?php
  2. $servername = "localhost";
  3. $username = "root";
  4. $password = "";
  5. $dbname = "gabinet";
  6.  
  7. // Create connection
  8. $conn = new mysqli($servername, $username, $password, $dbname);
  9. // Check connection
  10. if ($conn->connect_error) {
  11. die("Connection failed: " . $conn->connect_error);
  12. }
  13. $conn->set_charset("utf8");
  14.  
  15.  
  16. $q1 = query("SELECT `wezlyniepowiekszone` FROM `badania` WHERE `id` = '1'");
  17. $row1 = $q1->fetchrow();
  18.  
  19. $q2 = query("SELECT `wezlyniepowiekszone` FROM `choroby` WHERE `id` = '1'");
  20. $row2 = $q2->fetchrow();
  21.  
  22. echo $row1['wezlyniepowiekszone'] * $row2['wezlyniepowiekszone'];
  23.  
trueblue
Które rekordy dla jednego pacjenta z obydwu tabel chcesz mnożyć?
dentopolis
efektem ma być taka tabela jak poniżej czyli choroba, nazwa łacińska, punkty (iloczyn objawu z tabeli choroby * objawu z tabeli badania), objawy różniące kolejne prawdopodobne choroby z pierwszym najbardziej prawdopodobnym

trueblue
Robisz więc tak jak opisałem: http://forum.php.pl/index.php?s=&showt...t&p=1212968
Warunek ma być na id pacjenta w tabeli badanie. Otrzymasz X rekordów gdzie X=1*Y, a Y to liczba rekordów z chorobami.
Nie napisałeś skąd się bierze suma. Ale zakładam, że to suma wszystkich iloczynów, co ma wskazywać na większą szansę diagnozy danej choroby. Tak więc musisz posumować wszystkie iloczyny.
Tu przydałaby się inna budowa obydwu tabel, podobnie jak radzili Ci koledzy w przypadku tabeli ze stanem uzębienia.
dentopolis
udało mi się z tabelą tak jak chciałem oprócz różnych objawów kolejnych chorób względem najbardziej prawdopodobnej. jak do tego podejść?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.