Mysql: Join zwischen 2 Tabellen - macht dieses Schema so Sinn?

caramba12321

blödefragensteller
Hallo,

ich habe 2 Tabellen in meinem Datenbankschema:

hd_order welche alle Transaktionen speichert

und

hd_order_invoices welches rechnungen erfolgreicher transaktionen speichert.


Ich möchte jetzt gerne in einem query alle invoices aus der tabelle ziehen wo die dazu gehörige order die user_id = x und die deal_id = y enthält. Wie realisiert man sowas? Mit einem Join? Eventuell ist hier jemand der sich besser damit auskennt und mir einen Beispielquery zeigen kann?

Macht der Datenbankaufbau so Sinn?

Ich speicher quasi alle gestarteten Transaktionen meines Checkouts in meiner Order Tabelle. Kommt irgendwann vom Paymentanbieter der Status = Payed rein wird die order auf payed gesetzt und die dazugehörige Invoice erstellt.

Vielen Dank im vorraus :)
SQL:
CREATE TABLE IF NOT EXISTS `hd_order` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT NULL,
  `deal_id` int(11) DEFAULT NULL,
  `paymentmeans_id` int(11) DEFAULT NULL,
  `advertised_by_publisher_id` int(11) DEFAULT NULL,
  `token` varchar(125) NOT NULL,
  `status` varchar(20) DEFAULT NULL,
  `amount` decimal(10,2) NOT NULL,
  `discount` decimal(10,2) DEFAULT NULL,
  `number_of_deals` int(11) NOT NULL,
  `currency` varchar(20) NOT NULL,
  `is_payed` tinyint(1) DEFAULT NULL,
  `is_revoked` tinyint(1) DEFAULT NULL,
  `is_deleted` tinyint(1) DEFAULT NULL,
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `IDX_D706D236A76ED395` (`user_id`),
  KEY `IDX_D706D236F60E2305` (`deal_id`),
  KEY `IDX_D706D2369F63E055` (`paymentmeans_id`),
  KEY `IDX_D706D2367577D4D3` (`advertised_by_publisher_id`)
);

CREATE TABLE IF NOT EXISTS `hd_order_invoice` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `order_id` int(11) DEFAULT NULL,
  `number` varchar(100) NOT NULL,
  `invoice_number` varchar(100) NOT NULL,
  `type` varchar(1) NOT NULL,
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQ_765FFEFB8D9F6D38` (`order_id`),
  KEY `IDX_765FFEFBA76ED395` (`user_id`)
) ;
 
Zuletzt bearbeitet von einem Moderator:
Jepp, mit einem INNER JOIN.

SQL:
SELECT
    i.*
FROM
    hd_order AS o
    INNER JOIN hd_order_invoice AS i
        ON o.id = i.order_id
WHERE
    o.user_id = 'x'
    AND o.deal_id = 'y'
 
Zuletzt bearbeitet von einem Moderator:
Zurück