php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 13-03-2015, 09:52
Koda
 Registrierter Benutzer
Links : Onlinestatus : Koda ist offline
Registriert seit: Aug 2010
Beiträge: 105
Koda befindet sich auf einem aufstrebenden Ast
Standard ID über mehrere Tabellen auslesen

Guten Morgen

Vielleicht hat einer von euch eine Idee wie ich das mit PHP oder sogar direkt mit MySQL erledigen könnte. Ich habe schon mit Inner Join versucht aber ohne erfolg was fast klar war

Ich habe folgende Tabellen:
shop_cart
Code:
cartID | productID | userID | ...
    1   |     1     |    1
    2   |     2     |    1
    3   |     1     |    2
    4   |     1     |    1
Dann eine für die Attribute product_attribute
Code:
attributeID | productID | attribute
      1      |     1     |    Color
      2      |     1     |    Name
Und eine für die Bestellungen mit den Attributen shop_cart_attribute

Code:
ID | cartID | attributeID | productID | value
1  |   1    |      1      |      1    |   red
2  |   1    |      2      |      1    |   Tina
3  |   3    |      1      |      1    |   blue
4  |   3    |      2      |      1    |   Tina
5  |   4    |      1      |      1    |   blue
6  |   4    |      2      |      1    |   Nina
Nun habe ich in PHP folgende Informationen:

PHP-Code:
$productID 1$userID 1;
$productAttributeArray[0]['attributeID'] = 1;
$productAttributeArray[0]['value'] = red;
$productAttributeArray[1]['attributeID'] = 2;
$productAttributeArray[1]['value'] = Nina
Gerne möchte ich nun die cartID herausfinden, welche komplett mit den Werten in der Datenbank übereinstimmt. In diesem Fall wäre es die ID 4. Versuch habe ich schon sowas:

Code:
SELECT  c.cartID FROM shop_cart c INNER JOIN  shop_cart_attribute a ON (c.cartID=a.cartID) WHERE (a.attributeID = 1  AND a.value = 'red') AND  (a.attributeID = 2 AND a.value = 'Nina')
Dies ist leer da er ja nur Zeile für Zeile prüft.

Vielen Dank schon im Voraus für jede Hilfe.

Gruss

Koda

Geändert von Koda (13-03-2015 um 10:00 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 13-03-2015, 13:35
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Koda Beitrag anzeigen
Dies ist leer da er ja nur Zeile für Zeile prüft.
Eben – deshalb nicht mit AND suchen, sondern mit OR – um erst mal alle Datensätze zu finden, die eines der gesuchten Attribute aufweisen.
Diese nach Produkt gruppieren, die Anzahl der Datensätze zählen – und mit HAVING verlangen, dass diese Anzahl gleich der der gesuchten Attribute ist (oder kleiner gleich, wenn es noch andere Attribute geben kann).
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 13-03-2015, 15:28
Koda
 Registrierter Benutzer
Links : Onlinestatus : Koda ist offline
Registriert seit: Aug 2010
Beiträge: 105
Koda befindet sich auf einem aufstrebenden Ast
Standard

Hi

Vielen Dank für deine Antwort. Mit OR funktioniert es bereits
Code:
SELECT  c.cartID FROM shop_cart c INNER JOIN  shop_cart_attribute a ON (c.cartID=a.cartID) WHERE (a.attributeID = 1  AND a.value = 'red') OR (a.attributeID = 2 AND a.value = 'Nina')
Das Ziel ist es ja, das ich die ID nur bekomme wenn beides übereinstimmt. Da ich davon ausgehe deine Infos mit GROUP und HAVING werden einen Sinn bei irgendwelchen Ausnahmen machen habe ich es erweitert:

Code:
SELECT  COUNT(a.attributeID) AS count, c.cartID FROM shop_cart c INNER JOIN  shop_cart_attribute a  ON (c.cartID=a.cartID) WHERE (a.attributeID = 1  AND a.value = 'red')  OR (a.attributeID = 2 AND a.value = 'Nina') GROUP BY c.productID
So funktioniert es noch immer. Es sind ja immer zwei Attribute in diesem Beispiel. Nun gibt mir das Feld count jedoch immer nur 1 aus. Somit geht ein HAVING = 2 da ich ja möchte das er es nur anzeigt wenn alles stimmt gar nicht. Habe ich ein Überlegungsfehler?

Gruss

Koda
Mit Zitat antworten
  #4 (permalink)  
Alt 13-03-2015, 16:27
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Nicht die Attribute zählen, sondern die cart ids.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #5 (permalink)  
Alt 13-03-2015, 16:31
Koda
 Registrierter Benutzer
Links : Onlinestatus : Koda ist offline
Registriert seit: Aug 2010
Beiträge: 105
Koda befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wahsaga Beitrag anzeigen
Nicht die Attribute zählen, sondern die cart ids.
Habe ich auch versucht und bekomme auch nur 1 zurück geliefert. Eigentlich ja logisch, da ich doch nur eine cartID haben dürfte bei dem beide Attribute übereinstimmen. oder verstehe ich da was falsch? (VERGISS DAS )


EDIT: Habe mich zu früh gefreut. Wenn eines der Attribute richtig ist, so wird mir die erste gefunden ID gezeigt. wenn ich COUNT(c.cartID) mache wird mir 4 angezeigt.

In meiner Testdatenbank gibt er mir bei COUNT(c.cartID) as COUNT 4 aus, da es 4 cartID gibt bei denen der eine oder der andere Wert vorkommt wen ich auch GROUP BY nutze. Nun frage ich mich aber wie ich an den Wert komme mit HAVING wo es ja in meinem Fall nur 2 sein dürften da es grad nur um 2 Attribute geht.

Geändert von Koda (13-03-2015 um 16:47 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Über mehrere Tabellen löschen sfischer SQL / Datenbanken 6 03-08-2010 20:44
Abfrage über mehrere Tabellen beowulf1980 SQL / Datenbanken 3 05-04-2006 14:23
Update über mehrere Tabellen thebrain SQL / Datenbanken 2 16-02-2005 09:20
Über mehrere Tabellen löschen ! tdmf SQL / Datenbanken 8 20-01-2005 18:50
Abfrage über mehrere Tabellen Medialution SQL / Datenbanken 10 28-05-2003 17:53

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:03 Uhr.