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 05-09-2004, 14:19
Mumubaer
 Newbie
Links : Onlinestatus : Mumubaer ist offline
Registriert seit: Sep 2004
Beiträge: 15
Mumubaer ist zur Zeit noch ein unbeschriebenes Blatt
Standard [MSSQL] Datensätze zählen fehlgeschlagen :(

Hi Leute,

ich habe da ein (kleines) Problem mit mysql_num_rows

Folgendes: Ich will alle Datensätze zählen lassen, die in der Datenbank vorhanden sind. Aber: Es sollen jedoch nur die jenigen immer zusammen gezählt werden, die im Feld eine 2 oder 4 haben

Beispiel:

id | nummer | titel
--------------------------
1 | 2 | Hallo
2 | 4 | Hallo2
3 | 4 | Hallo3
4 | 2 | Hallo4
5 | 4 | Hallo5

Dabei sollte das dann so aussehen:
3 mal die Nummer 4 wiedergeben (Hallo2, Hallo3, Hallo5)
2 mal die Nummer 2 wiedergeben (Hallo, Hallo4)

meine Seite besteht aus einer Navigation (die dynamscih ist) und einer Mainpage. Dabei muss die kid von der Navigiation mit der kkid von der mainpage übereinstimmen.

habe es bis jetzt so geregelt. Hoffe Ihr versteht was ich will
Zitat:
SELECT tm.kkid, tl.kid FROM table_main AS pm, table_left AS tl WHERE pm.kkid = tl.kid
Leider gibt er die gesamte Datensatzanzahl raus Komm da nicht weiter Also: Hallo, Hallo2, Hallo3, Hallo4, Hallo5)
Mit Zitat antworten
  #2 (permalink)  
Alt 05-09-2004, 14:25
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

1. MSSQL != MySQL
2. Count und Group by sollte dir helfen
3. was sind table_main und table_left, die sind nirgends zu sehen => poste bitte zukünftig auch das, wovon du sprichst. Mit zusammenhangslose Gerede kann keiner was damit anfangen
Mit Zitat antworten
  #3 (permalink)  
Alt 05-09-2004, 14:57
Mumubaer
 Newbie
Links : Onlinestatus : Mumubaer ist offline
Registriert seit: Sep 2004
Beiträge: 15
Mumubaer ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also nochmal in Ruhe

Es gibt zwei tabellen (MYSQL ):

1. [table_main]
-id
-kkid
-titel

2. [table_left]
-id
-kid
-titel

Dabei muss die kid mit der kkid übereinstimmen (das hbe ich so gemacht: WHERE (table_left.kid = table_main.kkid))

Funktioniert auch ganz gut alles

So nun sollen alle Einträge in kkid geordnet gezählt werden:

beispiel:
id | kkid | titel
-------------------
1 | 4 | Main
2 | 4 | Impressum
3 | 2 | Links
4 | 2 | Hot Links
5 | 4 | Counter

So nun sollen alle kkid mit 2 und 4 gezählt werden und angezeigt:

Also: kkid = 4 (3x mal); kkid = 2 (2x mal)

Habe es makl mit count probiert, aber der zählz jetzt nur kkid 4+2 zusammen also kommt 2 raus.

Code: $anzahl = count(mysql_query("SELECT kkid FROM table_main GROUP BY kkid", $dblink));

Was mache ich genau falsch, bzw tipps wären gut. danke!
Mit Zitat antworten
  #4 (permalink)  
Alt 05-09-2004, 16:54
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich sprach von MySQL-Funktion COUNT und nicht von php-Funktion.

Probiere:
PHP-Code:
$sql 'select count(id) as cnt  from table_main group by kkid';
$res mysql_query($sql,$dblink) or die(mysql_error());
$row mysql_fetch_object($res);
echo 
$row->cnt
EDIT:
fehler korrigiert

Geändert von asp2php (05-09-2004 um 18:44 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 05-09-2004, 17:27
Mumubaer
 Newbie
Links : Onlinestatus : Mumubaer ist offline
Registriert seit: Sep 2004
Beiträge: 15
Mumubaer ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Bei deinem bekam ich eine Fehlermeldung (auch nach anpassung

hier nun mal der code der ganzen datei, vielleicht ist dann noch besser zu verstehen :

PHP-Code:
 $res mysql_query("select *, count(id) as countkkid 
from table_main group by kkid"
,$dblink) or die(mysql_error());
 
$row2 mysql_fetch_object($res);
 
$result mysql_query("SELECT * FROM table_left ORDER BY 
sortieren ASC"
$dblink);
 while (
$row mysql_fetch_array($result)) {
  echo
'
   <tr>
    <td width="188" height="19" class="smallfont" background="images/cbg.gif">
    <img src="images/bullet.gif">
 
<a href="index.php?kato=links&kid=' 
$row["kid"] . '">
<b>' 
$row["titel"] . '</b></a>';
     
      echo 
' (' $row2 -> countkkid ')';
     
  echo 
'</td></tr>';    
 }; 
Die Einzelnen Navigationspunkte werden erfolgreich ausgelesen, nur hinter jedem Link steht jetzt nur eine 2. Muss ich bei der Schleife etwas ändern noch. Langsam bekommt das ganze aber eine Gestalt an, dank der Tipps... Sehe schon MySQL ist net so mein Fall
EDIT:
linebreak sponsored by asp2php. Bitte demnächst selbst dafür sorgen. Danke.

Geändert von asp2php (05-09-2004 um 18:55 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 05-09-2004, 18:00
derHund
 PHP Master
Links : Onlinestatus : derHund ist offline
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
derHund ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
nur hinter jedem Link steht jetzt nur eine 2. Muss ich bei der Schleife etwas ändern noch.
das ist ja nicht mehr schön, was du hier fabrizierst

benutze nen join, um die beiden tabellen zu verbinden ...

poste mal bitte einen tabellen-dump, ... also alle befehle zum erstellen und füllen der beiden tabellen ... falls untenstehendes nicht funktioniert ...
Zitat:
1. [table_main]
-id
-kkid
-titel

2. [table_left]
-id
-kid
-titel
Code:
SELECT *, COUNT(kkid) counted
FROM table_main m
JOIN table_left l
ON m.kkid = l.kid
GROUP BY kkid
was ergibt diese abfrage? im php_my_admin zb.?
__________________
Die Zeit hat ihre Kinder längst gefressen
Mit Zitat antworten
  #7 (permalink)  
Alt 05-09-2004, 18:12
Mumubaer
 Newbie
Links : Onlinestatus : Mumubaer ist offline
Registriert seit: Sep 2004
Beiträge: 15
Mumubaer ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hehe euer problemkind wieder

PHP-Code:
SELECT * , COUNTkkid counted
FROM table_main m
JOIN table_left l ON m
.kkid l.kid
GROUP BY kkid
LIMIT 0 
30 

MySQL meldet



You have an error in your SQL syntax near 'ON m.kkid = l.kid
GROUP  BY kkid LIMIT 0, 30' 
at line 3 
heißt das schonmal was gutes?
Mit Zitat antworten
  #8 (permalink)  
Alt 05-09-2004, 18:52
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

nicht so schlampig leute, wenn schon Alias eingesetzt, bitte auch entsprechend anwenden.

@Mumubaer: du brauchst nur 3 Sachen, also bitte kein select * verwenden, denn das ist verschwenderisch
Code:
select l.kid, l.titel, count(m.id) as cnt 
   from table_main m inner join table_left l
      on m.kkid=l.kid 
         group by m.kkid
            limit 0,30
Mit Zitat antworten
  #9 (permalink)  
Alt 05-09-2004, 19:06
Mumubaer
 Newbie
Links : Onlinestatus : Mumubaer ist offline
Registriert seit: Sep 2004
Beiträge: 15
Mumubaer ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wow also er zeigt jetzt folgendes an:

PHP-Code:
kid titel cnt  
-------------------------
Hot Links 
Links 
So werde dann mal versuchen das ins navi einzubauen... ansonsten falls ihr gleich mal einen vorschlag habt (php code steht etwas weiter oben von der navi), dann einfach posten...

aber danke schonmal für diesen tipp!


gruß mumu
Mit Zitat antworten
  #10 (permalink)  
Alt 05-09-2004, 19:55
Mumubaer
 Newbie
Links : Onlinestatus : Mumubaer ist offline
Registriert seit: Sep 2004
Beiträge: 15
Mumubaer ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wollt nur bescheid geben das alles funzt! Vielen Dank Leute, habt mir sehr geholfen!
Mit Zitat antworten
  #11 (permalink)  
Alt 05-09-2004, 20:34
Mumubaer
 Newbie
Links : Onlinestatus : Mumubaer ist offline
Registriert seit: Sep 2004
Beiträge: 15
Mumubaer ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hmm habe doch noch ein kleines problem:

PHP-Code:
SELECT m.fidl.idcountm.id )  AS countfid
FROM table_message m
INNER  JOIN table_main l ON m
.fid l.id
WHERE 
$kid l.kkid )
GROUP  BY m.fid
ORDER  BY l
.id DESC
Es werden ja nur die Links angezeigt, die auch einen wert m.fid haben, wie kann ich das umgehen, dass er auch die werte zeigt, die keinen m.fid gesetzt haben? langsam verstehe ich die syntax schon, nur ich weiß jetzt nicht was ich genau ändern soll. denk das hat mit m.fid = l.id zutun.

Gruß mumu
Mit Zitat antworten
  #12 (permalink)  
Alt 05-09-2004, 21:11
derHund
 PHP Master
Links : Onlinestatus : derHund ist offline
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
derHund ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
langsam verstehe ich die syntax schon,
probiers mal mit nem RIGHT JOIN bzw. LEFT JOIN
__________________
Die Zeit hat ihre Kinder längst gefressen
Mit Zitat antworten
  #13 (permalink)  
Alt 05-09-2004, 21:57
Mumubaer
 Newbie
Links : Onlinestatus : Mumubaer ist offline
Registriert seit: Sep 2004
Beiträge: 15
Mumubaer ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das habe ich auch hier gefunden gehabt: http://www.w3schools.com/sql/sql_join.asp

aktueller code:
PHP-Code:
SELECT m.fid,l.idl.ptitel,l.kkidl.beschreibungcount(m.id) AS countfid FROM table_message m LEFT JOIN table_main l ON m.fid l.id WHERE ($kid l.kkidGROUP BY m.fid ORDER BY l.id DESC 
Also 3 von 5 Einträgen werden nur angezeigt, wobei die fehlenden 2 keine einträge in fid haben. jedoch sollen diese auch mit angezeigt werden. vielleicht hat noch jemand anderes eine idee..danke

gruß mumu

Geändert von Mumubaer (05-09-2004 um 22:01 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 05-09-2004, 22:31
derHund
 PHP Master
Links : Onlinestatus : derHund ist offline
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
derHund ist zur Zeit noch ein unbeschriebenes Blatt
Standard

probiers mal mit nem RIGHT JOIN

und sag bitte, in welcher tabelle was wo fehlen darf, ....
__________________
Die Zeit hat ihre Kinder längst gefressen
Mit Zitat antworten
  #15 (permalink)  
Alt 05-09-2004, 22:31
Mumubaer
 Newbie
Links : Onlinestatus : Mumubaer ist offline
Registriert seit: Sep 2004
Beiträge: 15
Mumubaer ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hehe next spam

Habe es fast fertig, nur diese verflixt (einfache) sache noch:

PHP-Code:
SELECT table_main.idtable_message.fidcounttable_main.id 
FROM table_main
LEFT  JOIN table_message ON table_message
.fid table_main.id GROUP BY table_main.id 
Nun werden zwar alle Angezeigt, nur die jenigen, die kein fid haben, bekommen eine (1) hingesetzt... Jedoch ist das ja leer und somit (0). Wie kommt das:

Ausgabe sieht so aus:

PHP-Code:
id fid counttable_main.id )  
----------------------------------------



NULL <-- zeigt (1anaber soll (0sein!
NULL <-- zeigt (1anaber soll (0sein!
NULL <-- zeigt (1anaber soll (0sein
Mit Zitat antworten
Antwort

Lesezeichen


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

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

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

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


 

Aktuelle PHP Scripte

jqPlot jQuery Plotting Plugin ansehen jqPlot jQuery Plotting Plugin

jqPlot ist ein plotting und charting plugin für das jQuery Javascript framework

06.11.2019 Berni | Kategorie: AJAX/ Framework
WYSIWYG Editor

WYSIWYG Editor zum Einbinden in PHP Scripte.

21.10.2019 Stephan_1972 | Kategorie: PHP/ WYSIWYG
Modelmanager

Der Modelmanager ist ein Webtool für Fotografen, kann als komplette Homepage oder als Webtool installiert werden.

10.10.2019 Stephan_1972 | Kategorie: PHP/ Bilder
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:29 Uhr.