- Ad -
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 22-11-2011, 14:34
doerfnix
 Registrierter Benutzer
Links : Onlinestatus : doerfnix ist offline
Registriert seit: Nov 2011
Beiträge: 9
doerfnix befindet sich auf einem aufstrebenden Ast
Standard Datenbank Struktur, Gruppen, Auswerten

Hallo,

Ich zerbreche mir im Moment den Kopf über ein kleines Problem und finde keine zufrieden stellende Lösung :

Ich habe ein Datenbank mit Name :
id Vorname Nachname Land
1 Karl Muster D
2 Jens Schmidt NL
3 Tanja Schmidt NL
4 Gustav Schmidt NL
....

Nun möchte ich einzelne Einträge als Gruppe markieren ( z.B. eine Familie )
-> Jens und Tanja Schmidt sind eine Familie, Gustav gehört nicht dazu.
id Vorname Nachname Gruppe Land
1 Karl Muster NULL D
2 Jens Schmidt 1 NL
3 Tanja Schmidt 1 NL
4 Gustav Schmidt NULL NL
....

Soweit so gut.
Nun möchte ich herausfinden wie viele Familien in welchen Land Wohnen
-> SELECT COUNT(id) FROM fam GROUP BY land

Wie bekomme ich es hin das doppelte Einträge in Gruppe nur einmal gezählt werden ??
Ich habe da irgendwie tomaten auf den Augen im mom. Oder hat jemand vieleicht eine bessere Idee wie ich in dem Fall die Tabelle aufbauen sollte ?

doerfnix
Mit Zitat antworten
  #2 (permalink)  
Alt 22-11-2011, 14:36
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.529
h3ll befindet sich auf einem aufstrebenden Ast
Standard

SELECT Land, COUNT(DISTINCT Gruppe) FROM fam GROUP BY Land
Mit Zitat antworten
  #3 (permalink)  
Alt 22-11-2011, 14:39
doerfnix
 Registrierter Benutzer
Links : Onlinestatus : doerfnix ist offline
Registriert seit: Nov 2011
Beiträge: 9
doerfnix befindet sich auf einem aufstrebenden Ast
Standard

Das Funktioniert nicht , beim oben genannten Beispiel würde

D 0 NL 1



herauskommen. Das habe ich auch schon probiert
Mit Zitat antworten
  #4 (permalink)  
Alt 22-11-2011, 14:52
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.529
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Also für mich sieht das Ergebnis korrekt aus.
Mit Zitat antworten
  #5 (permalink)  
Alt 22-11-2011, 14:54
doerfnix
 Registrierter Benutzer
Links : Onlinestatus : doerfnix ist offline
Registriert seit: Nov 2011
Beiträge: 9
doerfnix befindet sich auf einem aufstrebenden Ast
Standard

Das korrekte Ergebnis müßte lauten : D 1 NL 2
Mit Zitat antworten
  #6 (permalink)  
Alt 22-11-2011, 14:54
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.529
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Warum?
Mit Zitat antworten
  #7 (permalink)  
Alt 22-11-2011, 15:03
doerfnix
 Registrierter Benutzer
Links : Onlinestatus : doerfnix ist offline
Registriert seit: Nov 2011
Beiträge: 9
doerfnix befindet sich auf einem aufstrebenden Ast
Standard

1 Karl Muster NULL D -> 1 * D
2 Jens Schmidt 1 NL -> 1 * NL
3 Tanja Schmidt 1 NL -> doppelt, gehört zu id 2
4 Gustav Schmidt NULL NL -> 2 * NL

1 * D, 2 NL

In wirklichkeit steckt hier eine Kunden Datenbank dahinter, es gibt vereinzelt Kunden wo wir Kontakt zu einzelnen Abteilungen haben und diese Einzeln gelistet werden sollen, aber in der Statistik als 1 Kunde gezählt werden sollen.

Ich habe mir das so gedacht : Kunden-Tabelle mit allen Kunden ( z.B. MusterFirma, Müller Firma Abt. Holz, Müller Firma Abt. Stahl ... ) und eine Tabelle in der Gruppe-Namen gelistet sind ( z.B. Müller Firma) .
In der Auflistung werden diese dann als eine Firma mit Unterpunkten angezeigt:
  • Muster Firma
  • Firma Müller :
  1. Abt. Holz
  2. Abt. Stahl
  • Firma xyz
Vileicht gibt es ja auch eine bessere Lösung. In der Gruppentabelle nochmal alle Firmen aufzulisten, auch wenn es nur eine Abt. gibt, finde ich nicht so prikelnd.

doerfnix
Mit Zitat antworten
  #8 (permalink)  
Alt 22-11-2011, 15:16
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.529
h3ll befindet sich auf einem aufstrebenden Ast
Standard

firma:
id, firmenname

abteilung:
id, firma_id, abteilungsname

kunde:
id, abteilung_id, vorname, nachname


Aber wo hängt jetzt das Land? Beim Kunden oder bei der Abteilung?
Mit Zitat antworten
  #9 (permalink)  
Alt 22-11-2011, 20:53
doerfnix
 Registrierter Benutzer
Links : Onlinestatus : doerfnix ist offline
Registriert seit: Nov 2011
Beiträge: 9
doerfnix befindet sich auf einem aufstrebenden Ast
Standard

Die Firma ist unser Kunde, also kann hier eine Tabelle wegfallen.

PHP-Code:
firma:
idfirmenname   

abteilung
:
idfirma_idabteilungsname ,  Land 
In 98% der fällen ist es nur so das Firmenname == Abteilung ist, sodas hier eine Menge Overhead entsteht, den wollte ich irgendwie vermeiden. Aus diesen Grund hatte ich die Idee die erste Tabelle ( id, firmenname ) nur zu für die 2 % zu nutzen, bei denen es wirklich mehr als 1 Abteilung gibt.

Aber ich glaube ich komme nicht daran vorbei hier die beiden Tabellen parallel zu pflegen.

doerfnix
Mit Zitat antworten
  #10 (permalink)  
Alt 23-11-2011, 16:57
doerfnix
 Registrierter Benutzer
Links : Onlinestatus : doerfnix ist offline
Registriert seit: Nov 2011
Beiträge: 9
doerfnix befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

Ich habe heute nochmal ein bisschen rumgespielt und folgende Lösung gefunden:

PHP-Code:
select *, ( ohneGruppe.kunden gruppe.gruppen) as anzahl from 
   
(
    
select landcount(id) as kunden 
      from kunden 
      where kunden
.`groupis null 
      group by land
   
) as ohneGruppe
   left join 
   

    
select landcount(DISTINCT `group`) as gruppen 
    from kunden group by land
   
) as gruppe 
   ON 
(ohneGruppe.region gruppe.region
Ergibt dann folgendes Ergebnis :

PHP-Code:
land   kunden   land  gruppen   anzahl    
  D        1         D         0          1
  NL       1         NL       1          2 

Geändert von doerfnix (23-11-2011 um 17:00 Uhr) Grund: Text Formatiert
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
datenbank struktur Kakuzu SQL / Datenbanken 5 09-06-2009 09:01
[MySQL 4.1] Datenbank Design/Struktur mokelmann SQL / Datenbanken 8 17-02-2008 21:15
Datenbank struktur DrWeb BRAINSTORMING PHP/SQL/HTML/JS/CSS 8 24-10-2007 20:16
Datenbank-Struktur strauberry BRAINSTORMING PHP/SQL/HTML/JS/CSS 0 15-02-2006 13:51
[Script] messages in gruppen und in weitere gruppen sortieren? lord_fritte BRAINSTORMING PHP/SQL/HTML/JS/CSS 3 28-12-2004 22:01

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

Computer oder Gehirn? Macht uns das Internet immer dümmer? 
Computer oder Gehirn? Macht uns das Internet immer dümmer? Die ständig zur Verfügung stehenden Informationen über das Internet haben den Vorteil, dass man sich im Vergleich zu früheren Jahren deutlich weniger merken muss.

18.01.2018 | PhilippEgger

PHP oder Spanisch lernen? Oder doch beides?
PHP oder Spanisch lernen? Oder doch beides?Fremdsprachen sind für Entwickler enorm wichtig. Ohne Englisch geht fast nichts.

28.11.2017 | Berni


 

Aktuelle PHP Scripte

Top-Side.de Php News Script

Newsscript mit Smilies, BB-Code, Löschfunktion, Editierfunktion, Kommentarfunktion, Seiten- bzw. Blätterfunktion

14.04.2018 webmaster10 | Kategorie: PHP/ News
tsShoutbox

Textbasierte Shoutbox (kein MySQL nötig) mit Admin-Control-Panel zum Verwalten der Farbeinstellungen und Shoutboxoptionen, Archiv, Löschfunktion, Seiten- bzw. Blätterfunktion, Smilies, Badword-Filter, Überprüfung falscher Eingaben.

10.04.2018 webmaster10 | Kategorie: PHP/ Shoutbox
Domain Checker v1.1 Pro

Domainchecker (Whois) für folgende Domains: .de, .com, .net, .org, .info, .biz, .at, .ch, .li, .co.uk, .tv, .cc, .dk, .it, .ws

10.04.2018 webmaster10 | Kategorie: PHP/ Domains
 Alle PHP Scripte anzeigen

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