php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 11-07-2015, 18:06
screamfine
 Registrierter Benutzer
Links : Onlinestatus : screamfine ist offline
Registriert seit: Feb 2004
Beiträge: 9
screamfine ist zur Zeit noch ein unbeschriebenes Blatt
Post COUNT über 2 Tabellen - wie geht das?!

Hi zusammen,

ich komme einfach nicht weiter ...

Ich habe 2 Mysql Tabellen:

1. Tabelle: cs_shops (besteht aus den Feldern: id, shopTyp)
2. Tabelle: cs_transactions (besteht aus den Feldern: id, shopID, itemName)

shopTyp ist "sale" oder "aquisition"

Ich möchte nun herausfinden welche Items am meisten ver- bzw. angekauft wurden.

Funktioniert:
$result = mysql_query("SELECT itemName,COUNT(*) FROM cs_transactions GROUP BY itemName ORDER BY COUNT(*) DESC;");
while($row=mysql_fetch_array($result)) {
echo '{"item": "'.$row['itemName'].'","menge": '.$row['COUNT(*)'].'}';

Ich habe nur keine Ahnung wie ich es anstelle, dass ich nun noch die Verknüpfung zur cs_shops Tabelle hinbekomme, um eben nur die meisten Transaktionen von sale-Shops sowie von aquisition-Shops herauszufinden.

Kann mir jemand weiterhelfen??

Vielen Dank!
Mit Zitat antworten
  #2 (permalink)  
Alt 12-07-2015, 20:58
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Kennst du dich mit JOINS aus?

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 14-07-2015, 10:23
screamfine
 Registrierter Benutzer
Links : Onlinestatus : screamfine ist offline
Registriert seit: Feb 2004
Beiträge: 9
screamfine ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ein wenig, aber ich bekomme die Abfrage nicht hin.
Kann mir jemand weiterhelfen?
Mit Zitat antworten
  #4 (permalink)  
Alt 14-07-2015, 17:10
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zeig mal deine bisherigen Versuche.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #5 (permalink)  
Alt 15-07-2015, 10:38
screamfine
 Registrierter Benutzer
Links : Onlinestatus : screamfine ist offline
Registriert seit: Feb 2004
Beiträge: 9
screamfine ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das hier ist ein Versuch gewesen:

$result = mysql_query("SELECT cs_transactions.itemName,(SELECT COUNT(*) FROM cs_transactions) FROM cs_transactions, cs_shops WHERE cs_shops.shopKind = 'sale' GROUP BY cs_transactions.itemName ORDER BY (SELECT COUNT(*) FROM cs_transactions) DESC;");

Klappt aber nicht, da kommt ein seltsames Ergebnis raus.
Mit Zitat antworten
  #6 (permalink)  
Alt 15-07-2015, 16:29
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von screamfine Beitrag anzeigen
Ich möchte nun herausfinden welche Items am meisten ver- bzw. angekauft wurden.
...
Ich habe nur keine Ahnung wie ich es anstelle, dass ich nun noch die Verknüpfung zur cs_shops Tabelle hinbekomme, um eben nur die meisten Transaktionen von sale-Shops sowie von aquisition-Shops herauszufinden.
Sag halt der Datenbank, wie sie die Tabellen miteinander zu verknüpfen hat: Den Fremdschlüssel ".shopID" in "transactions" mit dem Primärschlüssel von "shops".

PHP-Code:
$sql 'select 
    count(*), transactions.itemName
    from 
        shops, transactions
    where
        transactions.shopID = shops.ID
        and shops.shopType = "acquisition"
    group by
        transactions.itemName
    order by
        count(*) desc
'

Mit Zitat antworten
  #7 (permalink)  
Alt 15-07-2015, 19:02
screamfine
 Registrierter Benutzer
Links : Onlinestatus : screamfine ist offline
Registriert seit: Feb 2004
Beiträge: 9
screamfine ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Vielen lieben Dank - das funktioniert!!!!
Mit Zitat antworten
  #8 (permalink)  
Alt 15-07-2015, 20:06
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Bitte keine grauenhaft unlesbaren Theta-Style Joins verwenden, sondern Joins nach dem modernen ANSI-Standard:

Code:
SELECT 
    t.itemName, COUNT(*)
FROM 
    shops s
INNER JOIN
    transactions t ON ( t.shopID = s.ID )
WHERE
    s.shopType = "acquisition"
GROUP BY
    t.itemName
ORDER BY
    COUNT(*) DESC
Mit Zitat antworten
  #9 (permalink)  
Alt 15-07-2015, 22:44
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von h3ll Beitrag anzeigen
Bitte keine grauenhaft unlesbaren Theta-Style Joins verwenden, sondern ...
Hmmm, aber der Typ des Joins ändert sich doch nicht durch eine andere Schreibweise. Er bleibt derselbe gewöhnliche Equi-Join, egal wie ich ihn notiere ...

Zitat:
... Joins nach dem modernen ANSI-Standard:
(...)
Modern wäre jetzt nicht die erste Eigenschaft, die mir im Zusammenhang mit SQL-92 in den Sinn käme.

Aber egal. Gibt es außer diesen eher subjektiven Gründen ("grauenhafte Unlesbarkeit" + "ANSI-Standard"-Autoritätsargument) auch objektive, warum man (innere) Joins ohne explizite JOIN-Klausel meiden sollte? Ich konnte auf die Schnelle jetzt keine finden.
Mit Zitat antworten
  #10 (permalink)  
Alt 15-07-2015, 22:56
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von fireweasel Beitrag anzeigen
Hmmm, aber der Typ des Joins ändert sich doch nicht durch eine andere Schreibweise. Er bleibt derselbe gewöhnliche Equi-Join, egal wie ich ihn notiere ...
Ja, aber die Lesbarkeit ist beim ANSI-JOIN besser gegeben.

Zitat:
Zitat von fireweasel Beitrag anzeigen
Modern wäre jetzt nicht die erste Eigenschaft, die mir im Zusammenhang mit SQL-92 in den Sinn käme.
Da siehst du erst wie altbacken der Theta-Style-Join wirklich ist

Zitat:
Zitat von fireweasel Beitrag anzeigen
Aber egal. Gibt es außer diesen eher subjektiven Gründen ("grauenhafte Unlesbarkeit" + "ANSI-Standard"-Autoritätsargument) auch objektive, warum man (innere) Joins ohne explizite JOIN-Klausel meiden sollte? Ich konnte auf die Schnelle jetzt keine finden.
Diese Gründe sollten eigentlich reichen.
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
Count über 2 Tabellen der_meier_hans SQL / Datenbanken 3 19-04-2007 19:26
[MySQL 4.0] JOIN über Drei Tabellen und COUNT() muwnd SQL / Datenbanken 0 27-03-2007 19:09
Problem mit COUNT über mehrere Tabellen Highlander SQL / Datenbanken 2 08-11-2004 13:12
COUNT über zwei Tabellen? kari_w SQL / Datenbanken 7 12-09-2004 15:22
Tabellen anordnen, wie geht das? FallenAngel2k PHP Developer Forum 2 27-03-2002 10:09

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

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:13 Uhr.