Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [MySQL]zapytanie przez dwie tabele

Napisany przez: 9148244 6.09.2021, 18:50:51

Witam

Nie potrafię zadać pytania w mysql, w związku z tym proszę o pomoc - oczywiście chciałbym się odwdzięczyć w postaci środków pieniężnych.
Do rzeczy
Mam dwie tabele

[naglowek] ktorej są komórki id, gotowka, karta, czek, data_sprzed
oraz
[dokumnet] w której jest id_naglowka, data_sprzed, id_kategoria_tow

pozycje z tabeli [dokumnet] mają w polu id_naglowka wartość id z tabeli [naglowek] (dokument.id_naglowka = naglowek.id)

Chę wykazać sumę (naglowek.gotowka, naglowek.karta, naglowek.czek) ale tylko tam gdzie [dokument.id_kategoria_tow = 10] oraz naglowek.data_sprzed=2021-09-06

Proszę o pomoc na forum lub na priv wink.gif

  1. -- phpMyAdmin SQL Dump
  2. -- version 3.5.5
  3. -- <a href="http://www.phpmyadmin.net" target="_blank">http://www.phpmyadmin.net</a>
  4. --
  5. -- Host: localhost
  6. -- Czas wygenerowania: 06 Wrz 2021, 19:48
  7. -- Wersja serwera: 5.5.21-log
  8. -- Wersja PHP: 5.4.10
  9.  
  10. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  11. SET time_zone = "+00:00";
  12.  
  13.  
  14. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  15. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  16. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  17. /*!40101 SET NAMES utf8 */;
  18.  
  19. --
  20. -- Baza danych: `forum`
  21. --
  22.  
  23. -- --------------------------------------------------------
  24.  
  25. --
  26. -- Struktura tabeli dla tabeli `dokumnet`
  27. --
  28.  
  29. CREATE TABLE IF NOT EXISTS `dokumnet` (
  30. `id_naglowka` int(11) NOT NULL,
  31. `data_sprzed` date NOT NULL,
  32. `id_kategoria_tow` int(11) NOT NULL
  33. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  34.  
  35. --
  36. -- Zrzut danych tabeli `dokumnet`
  37. --
  38.  
  39. INSERT INTO `dokumnet` (`id_naglowka`, `data_sprzed`, `id_kategoria_tow`) VALUES
  40. (1, '2021-09-06', 4),
  41. (1, '2021-09-06', 4),
  42. (1, '2021-09-06', 9),
  43. (1, '2021-09-06', 7),
  44. (2, '2021-09-06', 4),
  45. (2, '2021-09-06', 4),
  46. (2, '2021-09-06', 9),
  47. (2, '2021-09-06', 7);
  48.  
  49. -- --------------------------------------------------------
  50.  
  51. --
  52. -- Struktura tabeli dla tabeli `naglowek`
  53. --
  54.  
  55. CREATE TABLE IF NOT EXISTS `naglowek` (
  56. `id` int(11) NOT NULL,
  57. `gotowka` double NOT NULL,
  58. `karta` double NOT NULL,
  59. `czek` double NOT NULL,
  60. `data_sprzed` date NOT NULL
  61. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  62.  
  63. --
  64. -- Zrzut danych tabeli `naglowek`
  65. --
  66.  
  67. INSERT INTO `naglowek` (`id`, `gotowka`, `karta`, `czek`, `data_sprzed`) VALUES
  68. (1, 125, 25, 0, '2021-09-06'),
  69. (2, 70, 30, 0, '2021-09-06');
  70.  
  71. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
  72. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
  73. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Napisany przez: gornik 6.09.2021, 21:06:25

  1. SELECT sum(gotowka) AS totalGotowka, sum(karta) AS sumKarta, sum(czek) AS totalCzek FROM `naglowek` WHERE data_sprzed < '2021-09-06' AND id IN (SELECT id FROM `dokumnet` WHERE id_kategoria_tow = 10)


  1. <?php
  2. $categoryId = 10;
  3. $date = '2021-09-06';
  4. $query = "SELECT sum(gotowka) as totalGotowka, sum(karta) as sumKarta, sum(czek) as totalCzek FROM `naglowek` WHERE data_sprzed < '{$date}' AND id IN (SELECT id FROM `dokumnet` WHERE id_kategoria_tow = {$categoryId})";

O to chodzi?

ps. brakuje Ci primary keys w tej bazie przez co możesz zamulić serwer przy duzej ilosci rekordów + masz literówke w nazwie. Wnioskuje, że powinno być dokument zamiast "dokumnet"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)