SQL gleiche Attribute löschen?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Es ist eine Unart, Stern bei Abfragen zu verwenden, das verschwendet nur wichtige Resourcen. Man qualifiziert immer nur die Felder die Angezeigt werden sollen.

Wenn Du das Schema der Datenbank nicht kennst, kannst Du mit:

// Root
Show Tables;

Die Tabellen abfragen und von dort aus die Tabellenschemata:

SELECT * FROM information_schema.tables WHERE table_type = 'BASE TABLE';
Woher ich das weiß:Berufserfahrung
Von einem Experten bestätigt

Du kannst anstatt des * natürlich explizit angeben, was Du auswählen möchtest (inklusive Umbenennung)

Du könntest auch natural joins benutzen.

B0R0W 
Fragesteller
 10.05.2022, 05:00

Wie würde meine Anfrage denn aussehen wenn ich diese mit natural joins mache? Bin da immer sehr verwirrt wenn ich zu viele relationen joinen muss.

0
KarlRanseierIII  10.05.2022, 13:00
@B0R0W
select <cols> from verkauf natural join kunde natural join produkt;

AndreyevVitaliy hat es mit einem inner join gezeigt, bei dem Du die zu matchenden Spalten explizit angeben kannst. MAnche lehnen natural joins ab, weil DU dort nicht explizit angibst über welches Kriterium gejoined wird, das aber nur am Rande.

Grundlegend darfst Du auch sowas machen wie:

select verkauf.*,kunde.<col>, produkt.<col> as <othername> from ...
0

Select * FROM Verkauf FULL OUTER JOIN Kunde on Verkauf.KundeID = Kunde.ID where ….

AndreyevVitaliy  10.05.2022, 07:21

z.B

SELECT db.verkauf.ID, db.Kunden.KundeName, db.verkauf.ID_produkt, db.Product.ProduktName
FROM ((db.verkauf
INNER JOIN db.kunden ON db.verkauf.ID_kunde=Kunden.ID)
INNER JOIN db.Product ON db.Product.ID=db.verkauf.ID_produkt)
0