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.729
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.729
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.635
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.635
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

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

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


 

Aktuelle PHP Scripte

EJS TreeGrid ansehen EJS TreeGrid

EJS TreeGrid is DHTML component written in pure JavaScript to display and edit data in table, grid, tree view or grid with tree on HTML page

09.04.2019 coqsoft@ | Kategorie: JAVASCRIPT/ Components
Suchmaschine redaktionell, Branchenportal zum Geld verdienen

Programmbeschreibung Die Bezahl-Suchmaschine ist in Perl und PHP programmiert (eigenes CGI-Verzeichnis notwendig), benötigt PHP aber keine MySQL-Datenbank. Webmaster haben mit dieser Suchmaschine neben der normalen kostenlosen Registrierung von Lin

06.04.2019 skripte@ | Kategorie: PHP/ Suchmaschinen
Oog Photo-Video-Gallery

Mit Oog Photo-Gallery können Sie einfach und stilvoll Bilder (auch Video & Audio) auf Ihrem PHP5-Webserver veröffentlichen und verwalten. Lizenz: GNU GPL v2

06.04.2019 trottbrand@ | Kategorie: PHP/ Bilder
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:51 Uhr.