php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.07.2008, 23:13  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard abfrage auf gleiche Spalten aus zwei Tabellen

Hallo,

ich habe folgende zwei Tabellen:
Code:
single (id, nachname, vorname, spende)
familien (id, familienname, spende)
Nun möchte ich gerne eine Abfrage machen, die mir eine Liste aus beiden Tabellen generiert, in der aufgelistet ist, wer eine spende gegeben hat.

Also so
Code:
nachname/familienname, vorname, spende
testname, testvorname, 50
testfamilie, , 100
Geht so was?

maeck
maeck ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 06.07.2008, 23:31  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ja, aber immer wenn es darum geht, solltest du dir ueberlegen, ob eine Ausnormalisierung z.B. der Spende nicht mehr Sinn machen wuerde. Muss nicht, kann aber.

Deine Abfrage koennte so aussehen:
Code:
SELECT nachname AS name, vorname AS name2, spende FROM single
UNION ALL
SELECT familienname AS name, '' AS name2, spende FROM familien
Beide SELECT Statements muessen Spalten des gleichen Typs selektieren, daher auch das '' AS name2 im 2. Statement. Daraus koenntest du dir dann auch einen VIEW erzeugen:
Code:
CREATE VIEW spender AS
SELECT -- siehe oben
Jetzt kannst du auf "spender" lesend wie auf eine normale Tabelle zugreifen. Schreibend natuerlich nicht.
Zergling-new ist offline   Mit Zitat antworten
Alt 06.07.2008, 23:34  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Hallo Zergling,
danke sehr für deine schnelle Antwort.

Sind views eigentlich nur temporär oder bleiben die existent wie in Oracle?

danke, maeck
maeck ist offline   Mit Zitat antworten
Alt 06.07.2008, 23:43  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Zergling
Deine Abfrage koennte so aussehen:
Code:
SELECT nachname AS name, vorname AS name2, spende FROM single
UNION ALL
SELECT familienname AS name, '' AS name2, spende FROM familien
Ich habe jetzt folgende Abfrage
Code:
SELECT lastname AS nachname, surname AS vorname, donation AS Spende FROM anm2008_single WHERE donation != 0
UNION ALL
SELECT lastname AS nachname, '' AS vorname, donation AS Spende FROM anm2008_families WHERE donation != 0
bekomme aber folgende Fehlermeldung:
Code:
#1271 - Illegal mix of collations for operation 'UNION'
Die SELECT-Anfragen für sich funktionieren einwandfrei.

maeck
maeck ist offline   Mit Zitat antworten
Alt 06.07.2008, 23:49  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Code:
#1271 - Illegal mix of collations for operation 'UNION'
Okay, erst nachdenken!
Ich hatte unterschiedliche Kollationen in den Tabellen.

Jetzt gehts, DANKE!

// EDIT: Hat es eigentlich Auswirkungen, die Kollation einfach so zu ändern, während Daten drin sind?
Es stand auf latin1_swedish_ci, ich habe es jetzt auf utf8_unicode_ci geändert.

Welche Kollation verwendest du?

maeck
maeck ist offline   Mit Zitat antworten
Alt 07.07.2008, 07:30  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

denke das Umformen uebernimmt MySQL fuer dich, aber schau doch einfach nach

Uebrigens: Wuerde in deinen Statements nicht anfangen zu uebersetzen, entscheid dich fuer eine Sprache und bleib dabei.
Zergling-new ist offline   Mit Zitat antworten
Alt 07.07.2008, 09:07  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Zergling
Uebrigens: Wuerde in deinen Statements nicht anfangen zu uebersetzen, entscheid dich fuer eine Sprache und bleib dabei.
Hab eigentlich alles in englisch. Aber die Liste ist für etwas ältere Finanzleute, für die es besser ist, wenn es in deutsch da steht

Schönen Tag,
maeck
maeck ist offline   Mit Zitat antworten
Alt 07.07.2008, 22:50  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Ich habe doch noch ein Charset-Problem: Auf meinem lokalen System funktionierte alles, nachdem ich die Charsets angepasst habe.
Nun habe ich alles auf den Server im Internet hochgeladen und bekomme nun folgende Fehlermeldung:
Code:
Anfrage ( (SELECT lastname AS nachname, surname AS vorname, donation AS Spend FROM anm2008_single WHERE donation != 0) UNION ALL (SELECT lastname AS nachname, '' AS vorname, donation AS Spend FROM anm2008_families WHERE donation != 0) ORDER BY nachname, vorname ASC) konnte nicht ausgeführt werden : Illegal mix of collations (utf8_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation 'UNION'
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/.../listen.php on line 21
Aber ich hab alle Charsets auf utf8_general_ci, woran kann das noch liegen?

Welches Charset sollte man eigentlich verwenden, wenn man nicht so genau weiß, welche Daten in die DB kommen? Also auf jeden Fall deutsche Zeichen, und auch `´?
maeck ist offline   Mit Zitat antworten
Alt 07.07.2008, 23:51  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Da steht du würdest utf8_general_ci und latin1_swedish_ci (default Wert) als Kollation nutzen. Schau doch noch mal nach. Vielleicht hast du nur die Tabellen auf deinem lokalen System geändert, die Versionen online aber nicht!

Ansonsten fährst du mit utf8_general_ci auf ner sicheren Schiene!
Flor1an ist offline   Mit Zitat antworten
Alt 08.07.2008, 00:00  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Hi RaZoR,
ich habe alles auf utf8_general_ci gestellt, sogar die Kollation der MySQL-Verbindung.
Es gibt keine relevante Tabelle oder Attribut was nicht utf8_general_ci wäre; es gibt kein latin1_swedish_ci mehr

Kann sein, dass MySQL das irgendwie und irgendwo gecashed hat?
Denn wenn ich den SELECT-Befehl direkt in phpMyAdmin eingebe, bekomm ich die Tabellen. Über das php-Script nicht.

maeck
maeck 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 mehrere Tabellen SteiniKeule Datenbanken 14 18.04.2008 19:57
abfrage über mehrere tabellen mit einer bedingung DarkThunder PHP Tipps 2007 6 15.04.2007 17:13
Viele Tabellen oder viele Spalten?! thefaxx PHP Tipps 2006 2 01.10.2006 15:32
Abfrage über 3 Tabellen madSoul Datenbanken 5 26.06.2006 12:25
Abfrage mehrerer Tabellen per PHP (Code vereinfachen) PHP Tipps 2007 4 18.12.2005 12:34
[Erledigt] abfrage mehrere tabellen PHP Tipps 2005-2 3 31.10.2005 21:57
Abfrage aller Tabellen über Schleife PHP Tipps 2005-2 7 22.10.2005 12:16
[Erledigt] MySQL Abfrage über mehrere Tabellen [Erledigt] Datenbanken 2 14.10.2005 13:37
problem bei ausgabe einer abfrage aus 2 Tabellen Lia PHP Tipps 2005-2 2 28.07.2005 17:30
Abfrage aus 1 und sp�ter 3 Tabellen Datenbanken 5 22.07.2005 15:07
[Erledigt] Abfrage erstelln über 3 Tabellen Datenbanken 4 26.04.2005 16:02
Abfrage über 3 Tabellen Datenbanken 3 20.09.2004 08:08
Abfrage zweier Tabellen funzt net richtig Datenbanken 1 17.09.2004 12:53
2 Tabellen 1 Abfrage nilsfeld Datenbanken 6 11.08.2004 11:18
Abfrage über 3 Tabellen PHP Tipps 2004 3 31.07.2004 22:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
illegal mix of collations for operation \'union\', #1271 - illegal mix of collations for operation \'union\', 1271 - illegal mix of collations for operation \'union\', es werden unterschiedliche kollationen für die id-felder verwendet:, illegal mix of collations (latin1_swedish_ci,implicit) and (utf8_unicode_ci,coercible), mysql error: illegal mix of collations (latin1_swedish_ci,implicit) and (utf8_unicode_ci,coercible) for operation \'=\', illegal mix of collations (latin1_swedish_ci,implicit) and (utf8_unicode_ci,coercible) for operation \'=\', illegal mix of collations, \illegal mix of collations for operation \'union\'\, mysql illegal mix of collations for operation \'union\', 1271 illegal mix of collations for operation \'union\', illegal mix of collations (latin1_swedish_ci,implicit) and (utf8_unicode_ci,coercible) for operation, mysql gleichnamige felder in einer spalte, view gleiche spaltenbezeichnung, es werden unterschiedliche kollationen für die id-felder verwendet, mysql 2 tabellen mit gleichen spaltennamen, oxid es werden unterschiedliche kollationen für die id-felder verwendet:, \es werden unterschiedliche kollationen für die id-felder verwendet:\, http://www.php.de/datenbanken/46125-abfrage-auf-gleiche-spalten-aus-zwei-tabellen.html, utf8_general_ci oracle

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:56 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.