php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.04.2005, 12:26  
Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 45
PHP-Kenntnisse:
Fortgeschritten
aktionkuba
Standard [MySQL] Problem mit einer verschachtelten Abfrage

Hallo,

ich habe folgendes Problem. Ich habe ein Forum programmiert und wollte nun noch Signaturen einbauen. Das klappt auch super, nur das Auslesen will mir nicht gelingen. Hier mein SQL:

Code:
$sql  = "SELECT t1.*,t2.name,t3.benutzername,t3.status,t4.signatur ";
$sql .= "FROM forum_beitrag AS t1, forum AS t2, _benutzer AS t3, _profil AS t4 ";
$sql .= "WHERE t1.nr='" . $_GET["nr"] . "'";
$sql .= "AND t2.nr=t1.forum ";
$sql .= "AND t1.benutzer=t3.nr ";
$sql .= "AND t4.benutzer_nr=t3.nr ";
Ich bekomme alles bis auf die Signatur. MySQL macht bringt auch keine Fehlermeldung.

Wer hat Rat?

Vielen Dank
Stephan
aktionkuba ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.04.2005, 12:30  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

mysql_num_rows?

ansonsten vieleicht auch mal die tabellenstruktur in form von create's posten

mysql error
man sollte in seinen Scripten immer mysql_error() verwenden, in etwa so:
PHP-Code:
$sql "SELECT feld1,feld2 FROM table WHERE id=5";
$result mysql_query($sql) or die(mysql_error().'
Query: '
.$sql); 
mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 06.04.2005, 12:38  
Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 45
PHP-Kenntnisse:
Fortgeschritten
aktionkuba
Standard

Ok, ich habe mich vielleicht falsch ausgedrückt. Der stellt mir den kompletten Beitrag dar. Nur der Array-Eintrag 'signatur' ist leer, obwohl das Feld des Users gefüllt ist.

Zu den strukturen
Code:
CREATE TABLE `forum_beitrag` (
  `nr` int(10) NOT NULL auto_increment,
  `forum` int(10) NOT NULL default '0',
  `benutzer` int(10) NOT NULL default '0',
  `titel` varchar(255) NOT NULL default '',
  `text` text NOT NULL,
  `zeit` int(11) NOT NULL default '0',
  `edit` tinyint(1) NOT NULL default '0',
  `zeitedit` int(11) NOT NULL default '0',
  `hits` int(10) NOT NULL default '0',
  `sortierzeit` int(11) NOT NULL default '0',
  `closed` tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (`nr`)
) TYPE=MyISAM AUTO_INCREMENT=5 ;


# --------------------------------------------------------


CREATE TABLE `forum` (
  `nr` int(10) NOT NULL auto_increment,
  `rubrik` int(10) NOT NULL default '0',
  `name` varchar(255) NOT NULL default '',
  `info` varchar(255) NOT NULL default '',
  `sort` int(5) NOT NULL default '0',
  PRIMARY KEY  (`nr`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;


# --------------------------------------------------------


CREATE TABLE `_benutzer` (
  `nr` bigint(10) NOT NULL auto_increment,
  `vorname` varchar(255) NOT NULL default '',
  `nachname` varchar(255) NOT NULL default '',
  `email` varchar(255) NOT NULL default '',
  `benutzername` varchar(255) NOT NULL default '',
  `kennwort` varchar(255) NOT NULL default '',
  `status` tinyint(1) NOT NULL default '0',
  `hash` varchar(32) NOT NULL default '',
  PRIMARY KEY  (`nr`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;


# --------------------------------------------------------


CREATE TABLE `_profil` (
  `benutzer_nr` bigint(10) NOT NULL default '0',
  `beitraege` bigint(10) NOT NULL default '0',
  `reg_datum` bigint(11) NOT NULL default '0',
  `vorname` varchar(100) NOT NULL default '',
  `nachname` varchar(100) NOT NULL default '',
  `homepage` varchar(255) NOT NULL default '',
  `wohnort` varchar(100) NOT NULL default '',
  `geburtstag` date NOT NULL default '0000-00-00',
  `hobbies` varchar(255) NOT NULL default '',
  `signatur` varchar(255) NOT NULL default ''
) TYPE=MyISAM;
aktionkuba ist offline   Mit Zitat antworten
Alt 06.04.2005, 12:45  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

was liefert denn ein

SELECT signatur from _profil WHERE benutzer_nr = $_GET["nr"]

? ist vielicht das feld der betreffenden ID einfach leer ?


// abgeshen davon, keine ' bei integerfeldern, braucht man da nicht und ich hoffe du überprüft vorher die eingabe :P
btw wäre ein unsigend int bei vielen deiner spalten sinnvoll :P weil ich glaub kaum dass die benutzerid's und so negativ werden.

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 06.04.2005, 12:57  
Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 45
PHP-Kenntnisse:
Fortgeschritten
aktionkuba
Standard

mist du hast recht. da gabs ein problem mit der verlinkung. sorry für den thread. ich hätte nochmal alles checken sollen.

vielen dank für die hilfe.

der beitrag kann geschlossen/gelöscht werden, da er ja niemandem hilft.

gruß
stephan
aktionkuba ist offline   Mit Zitat antworten
Alt 06.04.2005, 13:03  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von robo47
btw wäre ein unsigend int bei vielen deiner spalten sinnvoll :P weil ich glaub kaum dass die benutzerid's und so negativ werden.
AUTO_INCREMENT wird nie negativ. Aber das spielt an und für sich keine Rolle, der einzige Unterschied ist in diesem Fall, dass INT 32767 (positive) Zahlen aufnehmen kann und UNSIGNED INT 65536 und daher eine gute Alternative ist, zu den diversen BIGINT's.

Aber zurück zur Abfrage: die hat nach meiner Meinung keinen Fehler. Allerdings wären wahrscheinlich JOINS übersichtlicher
Code:
$sql  = "SELECT
             t1.feld1,
             t1.feld2,
             t1..., 
             t2.name,
             t3.benutzername,
             t3.status,
             t4.signatur
         FROM forum_beitrag t1
         INNER JOIN forum t2 ON t1.forum = t2.nr
         INNER JOIN _benutzer t3 ON t1.benutzer = t3.nr
         INNER JOIN _profil t4 ON t1.benutzer = t4.nr
         WHERE t1.nr = " . $_GET["nr"];
Aber auf die Funktion hat das keinen Einfluss, da muss das Problem an den Daten liegen.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 06.04.2005, 13:09  
Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 45
PHP-Kenntnisse:
Fortgeschritten
aktionkuba
Standard

wären die joins schneller, oder wäre das nur zwecks der übersicht?
aktionkuba ist offline   Mit Zitat antworten
Alt 06.04.2005, 14:07  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

[quote="lazydog"]
Zitat:
Zitat von robo47
btw wäre ein unsigend int bei vielen deiner spalten sinnvoll :P weil ich glaub kaum dass die benutzerid's und so negativ werden.
AUTO_INCREMENT wird nie negativ. Aber das spielt an und für sich keine Rolle, der einzige Unterschied ist in diesem Fall, dass INT 32767 (positive) Zahlen aufnehmen kann und UNSIGNED INT 65536 und daher eine gute Alternative ist, zu den diversen BIGINT's.

jo das war mir schon klar nur woltle ich den author darauf hinweisen, dass er so unnötig platz verschenkt.
robo47 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage Problem mastermix Datenbanken 2 06.08.2007 11:45
[Erledigt] Problem mit Abfrage Datenbanken 0 20.10.2005 17:02
[Erledigt] Problem mit Abfrage... Datenbanken 2 21.09.2005 16:34
[mysql] verknüpfte kalender abfrage aktionkuba Datenbanken 6 28.04.2005 10:53
Problem mit abfrage. PHP Tipps 2005 13 30.03.2005 18:00
Problem mit abfrage und co PHP Tipps 2005 6 29.03.2005 16:38
Problem bei benutzername und passwort abfrage ? PHP Tipps 2005 4 15.03.2005 17:29
Abfrage Problem (vermute ich) PHP Tipps 2004-2 3 14.12.2004 22:21
[Erledigt] Abfrage LIMIT Problem Datenbanken 9 08.12.2004 19:05
Problem mit abfrage Datenbanken 8 05.12.2004 12:46
Problem mit einer SQL Abfrage picco PHP Tipps 2004-2 3 01.12.2004 22:32
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
[Erledigt] problem mit sql abfrage PHP Tipps 2004-2 6 13.11.2004 19:41
Problem mit SQL Abfrage Schiedsrichter Datenbanken 2 02.08.2004 07:52
Abfrage Problem (addition nicht mehr möglich?) Datenbanken 2 30.07.2004 15:02

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
doctrine where verschachtelt, mysql inner join verschachtelt, verschachtelte inner join abfrage, php verschachtelte abfrage, php mysql verschachtelte abfrage, sql verschachtelte select, doctrine verschachtelte, mysql verschachtelte abfrage inner join, php mysql verschachtelt, mysql verschachtelte abfragen, sql inner join verschachtelt, mysql join, verschachtelte abfragen mysql, mysql and not verschachtelt, doctrine geschachtelte abfrage, php mysql select geschachtelt, verschachtelte joins leer, zend verschachteltes selsct, mysql verschachtelt inner join, signatur mit php verschachtelt

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.