Benutzer mit den meisten Antworten
Sql Abfrage in 2 Tabellen in mehreren Columns

Frage
-
Einen wunderschönen guten Abend
ich hoffe sie können mir vlt helfen.
Ich benötige eine SQL abfrage und hoffe nicht das ich mich daran übernommen habe und es gar nicht möglich ist.
Zur vereinfachung habe ich ihnen mal eine sql dazu gelegt woraus man vlt erkennen kann was ich vor habe .
Es wird versucht aus 2 tabellen zu lesen. A und B
in der tabelle A steht (SKU, entity_Id(AI) )
ich besitze die Sku für die entity_id aus tabelle A
mit der entity_id aus tabelle A kann ich ein Item aus Tabelle B
in Tabelle B (value_id (AI) , attribute_id, entity_id, value )
in der spalte value können 3 werte drin stehen
1. img_path => attribute_id = 109
2. wareHouseCode => attribute_id = 967
3. designNumb => attribute_id = 972
Ich möchte die Sku eingeben und alle Sku's mit gleicher designNumb haben.
Ansicht z.b
SKU | wareHouseCode | img_path | designNumb
---- |-----------------------|----------------|------------------
458 | w3r5e7b8 | 4/z/im.img | 5688
698 | w3r4e7b8 | 5/i/im.img | 5688
985 | w3r5e7b8 | 8/e/im.img | 5688985 | w3r7e7b7 | 8/e/im.img | 5688
.
.
.
SELECT db357008_71.catalog_product_entity.sku as sku, db357008_71.catalog_product_entity_varchar.value as designNumb, db357008_71.catalog_product_entity_varchar.value as warehouseCode, db357008_71.catalog_product_entity_varchar.value as img_path FROM db357008_71.catalog_product_entity INNER JOIN db357008_71.catalog_product_entity_varchar on db357008_71.catalog_product_entity.entity_id = db357008_71.catalog_product_entity_varchar.entity_id INNER JOIN db357008_71.catalog_product_entity_varchar as designNumb on db357008_71.catalog_product_entity_varchar.attribute_id = 972 INNER JOIN db357008_71.catalog_product_entity_varchar as warehouseCode on db357008_71.catalog_product_entity_varchar.attribute_id = 967 INNER JOIN db357008_71.catalog_product_entity_varchar as img_path on db357008_71.catalog_product_entity_varchar.attribute_id = 109 WHERE db357008_71.catalog_product_entity.sku = '4212407' ;
Ich würde mich freuen wennmir jemand helfen könnte und falls noch Informationen benötigt werden müsst ihr mir es sagen.
mfg deepkey
Antworten
-
Hi,
das ist MySQL, nicht Microsoft SQL Server. Da es teilks gravierende Unterschiede zwichen den Systemen gibt, w#re es wohl sinnvoller, die Frage in einem MySQL Forum zu stellen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Montag, 11. Februar 2019 05:40
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Montag, 18. Februar 2019 09:00
Alle Antworten
-
Hi,
so ganz allgemein würde ich sagen:
SELECT e.sku AS sku, ev1.value AS designNumb, ev2.value AS warehouseCode, ev3.value AS img_path FROM db357008_71.catalog_product_entity e INNER JOIN db357008_71.catalog_product_entity_varchar ev1 ON e.entity_id = ev1.entity_id AND ev1.attribute_id = 972 INNER JOIN db357008_71.catalog_product_entity_varchar ev2 ON e.entity_id = ev2.entity_id AND ev2.attribute_id = 967 INNER JOIN db357008_71.catalog_product_entity_varchar ev3 ON e.entity_id = ev3.entity_id AND ev3.attribute_id = 109 WHERE e.sku = '4212407'
Um das aber mit Bestimmtheit sagen zu können, poste bitte die CREATE TABLE Statements der beiden Tabellen, dazu INSERT INTO Statements einiger Beispieldaten und passend zu den Beispieldaten dann die gewünschten Ergebnisse.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Bearbeitet Stefan FalzModerator Dienstag, 5. Februar 2019 17:50
-
Also vorab ein Großes Danke für die schnelle Antwort.
hat die Aufgabe aber noch nicht komplett gelöst.
vorab die vorhandenen geforderten daten
create der tables
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; -- ----------------------------------------------------- -- Schema mydb -- ----------------------------------------------------- -- ----------------------------------------------------- -- Schema db357008_71 -- ----------------------------------------------------- -- ----------------------------------------------------- -- Schema db357008_71 -- ----------------------------------------------------- CREATE SCHEMA IF NOT EXISTS `db357008_71` DEFAULT CHARACTER SET utf8 ; USE `db357008_71` ; -- ----------------------------------------------------- -- Table `db357008_71`.`catalog_product_entity` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `db357008_71`.`catalog_product_entity` ( `entity_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Entity ID', `entity_type_id` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Entity Type ID', `attribute_set_id` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Attribute Set ID', `type_id` VARCHAR(32) NOT NULL DEFAULT 'simple' COMMENT 'Type ID', `sku` VARCHAR(64) NULL DEFAULT NULL COMMENT 'SKU', `created_at` TIMESTAMP NULL DEFAULT NULL COMMENT 'Creation Time', `updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT 'Update Time', `has_options` SMALLINT(6) NOT NULL DEFAULT '0' COMMENT 'Has Options', `required_options` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Required Options', PRIMARY KEY (`entity_id`)) ENGINE = InnoDB AUTO_INCREMENT = 14856 DEFAULT CHARACTER SET = utf8 COMMENT = 'Catalog Product Table'; -- ----------------------------------------------------- -- Table `db357008_71`.`catalog_product_entity_varchar` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `db357008_71`.`catalog_product_entity_varchar` ( `value_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'Value ID', `entity_type_id` INT(10) UNSIGNED NOT NULL COMMENT 'Entity Type ID', `attribute_id` SMALLINT(5) UNSIGNED NOT NULL COMMENT 'Attribute ID', `store_id` SMALLINT(5) UNSIGNED NOT NULL COMMENT 'Store ID', `entity_id` INT(10) UNSIGNED NOT NULL COMMENT 'Entity ID', `value` VARCHAR(255) NULL DEFAULT NULL COMMENT 'Value', PRIMARY KEY (`value_id`)) ENGINE = InnoDB AUTO_INCREMENT = 937991 DEFAULT CHARACTER SET = utf8 COMMENT = 'Catalog Product Varchar Attribute Backend Table'; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
insert ergeben sich ein wenig aus den bilder die folgen. es sind noch andere unrelevante daten mit bei.
das ist die ausgabe des codes vom Herrn Falz, wenn ich sie so direkt benennen darf
(diebezüglich muss ich noch warten , ich darf noch keine bilder hochladen)
aber es hat gepasst nur hat er nur von der einen nummer alles gesucht und eseinmal wiederholt,
die aufteilung ist super , die wiederholung verstehe ich hingegen leider nicht.
hier wie die daten wie sie ca in der Entity_varchar gespeichert sind (um die die es sich handelt)
-------------------------------------------------------
entity_id | attribute_id | value
--------------------------------------------
404 | 109 | /3/3/33291b1_1.jpg
404 | 967 | w1r1e6b2
404 | 972 | 3004-3065-93792
-------------------------------------------------------------
jede `entity_id` hat verschiedene values die aber jedes mal die selbe `attribute_id` haben
/3/3/33291b1_1.jpg = immer adresse für bild und attribute_id 109
usw
mit der entity_id ist der zuweis zu der sku
die wie folgt gespeichert aussehen
----------------------------
entity_id | sku
----------------------
404 | 65987
405 | 66284
------------------------
tabellen zusammen geführt über die entity_id
ich möchte das wenn ich eine sku eingebe,
1. sucht mir alle anderen sku mit der selben die designId(value = attribute_id -> 972) von gesuchter sku
2. anzeigen des jeweiligen warehouseCodes und jpg path
die designnummer dazu stehen zu haben daneben wärenicht schlecht auch wenns die selbe ist.
ich hoffe das hilft fürs verständnis und entschuldigt das nicht beachten von groß und klein schreibung
-
Einen schönen guten Morgen.
Anscheinend war es gestern ziemlich lange alles und auch schon ziemlich spät.
Ich habe dann eben noch einmal rüber geschaut und mir ist dann aufgefallen dass dieLösung direkt vor mir lag.
Ich habe doch schon eine Query die mir alle Sku's zurück gegeben hat mit der selben DesignNumb.
Also habe ich den Code von Herrn Falz genommen und mit meinen erweitert.
Sind jetzt zwei verschiedene Codestyles '-'
SELECT e.sku AS sku, ev1.value AS designNumb, ev2.value AS warehouseCode, ev3.value AS img_path FROM db357008_71.catalog_product_entity as e INNER JOIN db357008_71.catalog_product_entity_varchar ev1 ON e.entity_id = ev1.entity_id AND ev1.attribute_id = 972 INNER JOIN db357008_71.catalog_product_entity_varchar ev2 ON e.entity_id = ev2.entity_id AND ev2.attribute_id = 967 INNER JOIN db357008_71.catalog_product_entity_varchar ev3 ON e.entity_id = ev3.entity_id AND ev3.attribute_id = 109 WHERE e.sku IN (SELECT `sku` from `catalog_product_entity` Where `entity_id` in (SELECT `entity_id` from `catalog_product_entity_varchar` where `value` =(Select `value` from `catalog_product_entity_varchar` where `entity_id` = (Select `entity_id` from `catalog_product_entity` where `sku` = 'k0059' and `attribute_id` = 972)))) GROUP BY e.sku;
und die ausgabe ist perfekt.
Danke nochmal für die schnelle und perfekte hilfe.
Wenn jemand Lust hat die SQL nochmal sauber zu schreiben darf das gerne machen;)
würde ich gerne annehmen.
LG
-
Hi,
das ist MySQL, nicht Microsoft SQL Server. Da es teilks gravierende Unterschiede zwichen den Systemen gibt, w#re es wohl sinnvoller, die Frage in einem MySQL Forum zu stellen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Montag, 11. Februar 2019 05:40
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Montag, 18. Februar 2019 09:00